go 常用标准库 时间函数
作者:互联网
go 常用标准库 时间函数
1.1 时间的解析和格式化
#格式TIME_FMT为 2006-01-02 15:04:05
TIME_FMT := "2006-01-02 15:04:05"
#获取当前时间 2022-05-11 13:06:16.1146258 +0800 CST m=+0.016836601
now := time.Now()
#前面定义TIME_FMT这样的时间格式,然后用now获取到当前时间,用TIME_FMT这样的格式打印出来
ts := now.Format(TIME_FMT)
#我们不建议直接fmt.Println打印时间
loc, _ = time.LoadLocation("Asia/Shanghai")
#获取时间
if t,err := time.ParseInLocation(TIME_FMT, ts, loc); err == nil {
#t.UnixMilli()是所有时间的毫秒,不是当前毫秒,粘贴出来到时间计算器可以获取当前时间
fmt.Println(t.Day(),t.Hour(),t.Minute(),t.Second(),t.UnixMilli())
} else {
fmt.Println(err)
}
2.1 时间运算
diff1 := t1.Sub(t0) //计算t1跟t0的时间差,返回类型是time.Duration
diff2 := time.Since(t0) //计算当前时间跟t0的时间差,返回类型是time.Duration
diff3 := time.Duration(3 * time.Hour) //Duration表示两个时刻之间的距离
t4 := t0.Add(diff3)
t4.After(t0) //true
时间打印及时间计算
func main() {
now := time.Now()
fmt.Println(now.Hour(),now.Minute(),now.Second())
fmt.Println(now.Day()) //获取今天是这个月的第几天
fmt.Println(now.YearDay()) //获取今天是今天的第几天
fmt.Println(now.Unix()) //秒
fmt.Println(now.UnixMilli()) //毫秒
fmt.Println(now.UnixMicro())
fmt.Printf("%d\n",now.Weekday()) //获取今天是每周的第几天
fmt.Println(now.Weekday().String()) //获取今天是星期几,并转换成string
time.Sleep(3*time.Second) //原地等待三秒钟
t2 := time.Now() //再次获取当前时间t2
//计算t2与上面时间now的间隔,因为sleep了3秒,所以这里应该是3秒
dua := t2.Sub(now)
//计算当前时间与上面时间now的记那个,这里可能和dua查了几纳秒,几乎是一样的
dua2 := time.Since(now)
fmt.Println(dua)
fmt.Println(dua2)
//这里让最开始获取的时间加上sleep的那三秒,dua就是计算的sleep那三秒
t3 := now.Add(dua)
fmt.Println(t3) //t3=t2
}
3.1 时间的属性
t0.Unix(), t0.UnixMilli(), t0.UnixMicro(), t0.UnixNano()
t2.Year(), t2.Month(), t2.Day(), t2.YearDay()
t2.Weekday().String(), t2.Weekday()
t1.Hour(), t1.Minute(), t1.Second()
4.1 定时执行
tm := time.NewTimer(3 * time.Second)
<-tm.C //阻塞3秒钟
//do something
tm.Stop()
//或者用:
<-time.After(3 * time.Second) //阻塞3秒钟
5.1 周期执行
tk := time.NewTicker(1 * time.Second)
for i := 0; i < 10; i++ {
<-tk.C //阻塞1秒钟
//do something
}
tk.Stop()
标签:常用,函数,fmt,t2,t0,Println,time,go,now 来源: https://www.cnblogs.com/liwenchao1995/p/16257647.html