详解Golang中的各种时间操作

【字号: 日期:2022-09-08浏览:25作者:雯心

需求

时间格式的转换比较麻烦,自己写了个工具,可以通过工具中的这些方法相互调用转成自己想要的格式,代码如下,后续有新的函数再添加

实现代码

package utilsimport 'time'const ( TIMEFORMAT = '20060102150405' NORMALTIMEFORMAT = '2006-01-02 15:04:05')// 当前时间func GetTime() time.Time{ return time.Now()}// 格式化为:20060102150405func GetTimeString(t time.Time) string { return t.Format(TIMEFORMAT)}// 格式化为:2006-01-02 15:04:05func GetNormalTimeString(t time.Time) string { return t.Format(NORMALTIMEFORMAT)}// 转为时间戳->秒数func GetTimeUnix(t time.Time) int64 { return t.Unix()}// 转为时间戳->毫秒数func GetTimeMills(t time.Time) int64 { return t.UnixNano() / 1e6}// 时间戳转时间func GetTimeByInt(t1 int64) time.Time{ return time.Unix(t1,0)}// 字符串转时间func GetTimeByString(timestring string) (time.Time,error){ if timestring == '' { return time.Time{},nil } return time.ParseInLocation(TIMEFORMAT, timestring, time.Local)}// 标准字符串转时间func GetTimeByNormalString(timestring string) (time.Time,error){ if timestring == '' { return time.Time{},nil } return time.ParseInLocation(NORMALTIMEFORMAT, timestring, time.Local)}// 比较两个时间大小func CompareTime(t1 ,t2 time.Time) bool { return t1.Before(t2)}// n小时后的时间字符串func GetNextHourTime(s string, n int64) string { t2, _ := time.ParseInLocation(TIMEFORMAT, s, time.Local) t1 := t2.Add(time.Hour * time.Duration(n)) return GetTimeString(t1)}// 计算俩个时间差多少小时func GetHourDiffer(start_time, end_time string) float32 { var hour float32 t1, err := time.ParseInLocation(TIMEFORMAT, start_time, time.Local) t2, err := time.ParseInLocation(TIMEFORMAT, end_time, time.Local) if err == nil && CompareTime(t1,t2) { diff := GetTimeUnix(t2) - GetTimeUnix(t1) hour = float32(diff) / 3600 return hour } return hour}// 判断当前时间是否是整点func Checkhours() bool { _, m, s := GetTime().Clock() if m == s && m == 0 && s == 0 { return true } return false}// 时间字符串转为标准字符串func StringToNormalString(t string) string { if !(len(TIMEFORMAT) == len(t) || len(SHORTTIMESTRING) == len(t)) { return t } if len(SHORTTIMESTRING) == len(t) { t += '000000' } if len(TIMEFORMAT) == len(t) { t1,err:= GetTimeByString(t) if err != nil { return t } t = GetTimeString(t1) } return t}

判断一个时间点是否在一个时间点之后

过程:这个对于时间戳而言非常简单,但是对于其他的需要转换到time即可对比

stringToTime, _ := time.Parse('2006-01-02 15:04:05', '2017-12-12 12:00:00') beforeOrAfter := stringToTime.After(time.Now()) if beforeOrAfter == true { fmt.Println('2017-12-12 12:00:00在tNow之后!') } else { fmt.Println('2017-12-12 12:00:00在tNow之前!') }

判断一个时间相比另外一个时间点过去了多久过程:这个是用Time的方式来对比

beginTime :=time.Now() time.Sleep(time.Second*1) durtime:= time.Since(beginTime) fmt.Println('离现在过去了:',durtime)

到此这篇关于详解Golang中的各种时间操作的文章就介绍到这了,更多相关Golang 时间操作内容请搜索乐呵呵网以前的文章或继续浏览下面的相关文章希望大家以后多多支持乐呵呵网!

标签: Golang
相关文章: