其他分享
首页 > 其他分享> > go 常用标准库 时间函数

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