详解Golang中的各种时间操作
需求
时间格式的转换比较麻烦,自己写了个工具,可以通过工具中的这些方法相互调用转成自己想要的格式,代码如下,后续有新的函数再添加
实现代码
packageutils
import"time"
const(
TIMEFORMAT="20060102150405"
NORMALTIMEFORMAT="2006-01-0215:04:05"
)
//当前时间
funcGetTime()time.Time{
returntime.Now()
}
//格式化为:20060102150405
funcGetTimeString(ttime.Time)string{
returnt.Format(TIMEFORMAT)
}
//格式化为:2006-01-0215:04:05
funcGetNormalTimeString(ttime.Time)string{
returnt.Format(NORMALTIMEFORMAT)
}
//转为时间戳->秒数
funcGetTimeUnix(ttime.Time)int64{
returnt.Unix()
}
//转为时间戳->毫秒数
funcGetTimeMills(ttime.Time)int64{
returnt.UnixNano()/1e6
}
//时间戳转时间
funcGetTimeByInt(t1int64)time.Time{
returntime.Unix(t1,0)
}
//字符串转时间
funcGetTimeByString(timestringstring)(time.Time,error){
iftimestring==""{
returntime.Time{},nil
}
returntime.ParseInLocation(TIMEFORMAT,timestring,time.Local)
}
//标准字符串转时间
funcGetTimeByNormalString(timestringstring)(time.Time,error){
iftimestring==""{
returntime.Time{},nil
}
returntime.ParseInLocation(NORMALTIMEFORMAT,timestring,time.Local)
}
//比较两个时间大小
funcCompareTime(t1,t2time.Time)bool{
returnt1.Before(t2)
}
//n小时后的时间字符串
funcGetNextHourTime(sstring,nint64)string{
t2,_:=time.ParseInLocation(TIMEFORMAT,s,time.Local)
t1:=t2.Add(time.Hour*time.Duration(n))
returnGetTimeString(t1)
}
//计算俩个时间差多少小时
funcGetHourDiffer(start_time,end_timestring)float32{
varhourfloat32
t1,err:=time.ParseInLocation(TIMEFORMAT,start_time,time.Local)
t2,err:=time.ParseInLocation(TIMEFORMAT,end_time,time.Local)
iferr==nil&&CompareTime(t1,t2){
diff:=GetTimeUnix(t2)-GetTimeUnix(t1)
hour=float32(diff)/3600
returnhour
}
returnhour
}
//判断当前时间是否是整点
funcCheckhours()bool{
_,m,s:=GetTime().Clock()
ifm==s&&m==0&&s==0{
returntrue
}
returnfalse
}
//时间字符串转为标准字符串
funcStringToNormalString(tstring)string{
if!(len(TIMEFORMAT)==len(t)||len(SHORTTIMESTRING)==len(t)){
returnt
}
iflen(SHORTTIMESTRING)==len(t){
t+="000000"
}
iflen(TIMEFORMAT)==len(t){
t1,err:=GetTimeByString(t)
iferr!=nil{
returnt
}
t=GetTimeString(t1)
}
returnt
}
判断一个时间点是否在一个时间点之后
过程:这个对于时间戳而言非常简单,但是对于其他的需要转换到time即可对比
stringToTime,_:=time.Parse("2006-01-0215:04:05","2017-12-1212:00:00")
beforeOrAfter:=stringToTime.After(time.Now())
ifbeforeOrAfter==true{
fmt.Println("2017-12-1212:00:00在tNow之后!")
}else{
fmt.Println("2017-12-1212:00:00在tNow之前!")
}
判断一个时间相比另外一个时间点过去了多久
过程:这个是用Time的方式来对比
beginTime:=time.Now()
time.Sleep(time.Second*1)
durtime:=time.Since(beginTime)
fmt.Println("离现在过去了:",durtime)
到此这篇关于详解Golang中的各种时间操作的文章就介绍到这了,更多相关Golang时间操作内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!