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)
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)