在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)
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐