golang的time包:秒、毫秒、微秒、纳秒
·
在Golang中time包提供了秒、毫秒、微秒、纳秒的时间戳获取方法,如下:
now := time.Now()
log.Println("时间戳(秒):", now.Unix()) // 输出:时间戳(秒) : 1665807442
log.Println("时间戳(毫秒):", now.UnixMilli()) // 输出:时间戳(毫秒): 1665807442207
log.Println("时间戳(微秒):", now.UnixMicro()) // 输出:时间戳(微秒): 1665807442207974
log.Println("时间戳(纳秒):", now.UnixNano()) // 输出:时间戳(纳秒): 1665807442207974500
如果自己转换呢?如下:
ns := now.UnixNano() // 获得当前单位为纳秒的时间戳
log.Println("时间戳(秒):", ns/1e9) // 输出:时间戳(秒) : 1665807442
log.Println("时间戳(毫秒):", ns/1e6) // 输出:时间戳(毫秒): 1665807442207
log.Println("时间戳(微秒):", ns/1e3) // 输出:时间戳(微秒): 1665807442207974
log.Println("时间戳(纳秒):", ns) // 输出:时间戳(纳秒): 1665807442207974500
再来个例子:
需求:获得今日0时起,到当前时间分别过去了多少纳秒、微秒、毫秒、秒。
now := time.Now()
// 方法一:
beginningOfDay := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location())
log.Println("今日已过(纳秒):", now.UnixNano()-beginningOfDay.UnixNano())
log.Println("今日已过(微秒):", now.UnixMicro()-beginningOfDay.UnixMicro())
log.Println("今日已过(毫秒):", now.UnixMilli()-beginningOfDay.UnixMilli())
log.Println("今日已过(秒):", now.Unix()-beginningOfDay.Unix())
// 方法二:
passedTimeNs := now.UnixNano() - beginningOfDay.UnixNano()
log.Println("今日已过(纳秒):", passedTimeNs)
log.Println("今日已过(微秒):", passedTimeNs/1e3)
log.Println("今日已过(毫秒):", passedTimeNs/1e6)
log.Println("今日已过(秒):", passedTimeNs/1e9)
更多推荐
已为社区贡献1条内容
所有评论(0)