程序中的一个常见要求是获取自Unix纪元以来的秒数,毫秒或纳秒数。这里是如何在Go编程中做。
使用Unix或UnixNano的time.Now
,分别以秒或纳秒为单位获得自Unix纪元起的耗用时间。
注意,没有UnixMillis
,所以要获取从纪元开始的毫秒数,需要手动除以纳秒。
还可以将整数秒或纳秒从历元转换为相应的时间。
具体的 epoch
用法,可参考示例中的代码 -
所有的示例代码,都放在
F:\worksp\golang
目录下。安装Go编程环境请参考:/tutorial/detail-5562.html
json.go
的完整代码如下所示 -
package main import "fmt" import "time" func main() { // Use `time.Now` with `Unix` or `UnixNano` to get // elapsed time since the Unix epoch in seconds or // nanoseconds, respectively. now := time.Now() secs := now.Unix() nanos := now.UnixNano() fmt.Println(now) // Note that there is no `UnixMillis`, so to get the // milliseconds since epoch you'll need to manually // divide from nanoseconds. millis := nanos / 1000000 fmt.Println(secs) fmt.Println(millis) fmt.Println(nanos) // You can also convert integer seconds or nanoseconds // since the epoch into the corresponding `time`. fmt.Println(time.Unix(secs, 0)) fmt.Println(time.Unix(0, nanos)) }
执行上面代码,将得到以下输出结果 -
F:\worksp\golang>go run epoch.go 2017-01-22 09:16:32.2002635 +0800 CST 2017-01-22 09:16:32 +0800 CST 2017-01-22 09:16:32.2002635 +0800 CST