程式中的一個常見要求是獲取自Unix紀元以來的秒數,毫秒或納秒數。這裡是如何在Go程式設計中做。
使用Unix或UnixNano的time.Now
,分別以秒或納秒為單位獲得自Unix紀元起的耗用時間。
注意,沒有UnixMillis
,所以要獲取從紀元開始的毫秒數,需要手動除以納秒。
還可以將整數秒或納秒從歷元轉換為相應的時間。
具體的 epoch
用法,可參考範例中的程式碼 -
所有的範例程式碼,都放在
F:\worksp\golang
目錄下。安裝Go程式設計環境請參考:/2/23/798.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
1485047792
1485047792200
1485047792200263500
2017-01-22 09:16:32 +0800 CST
2017-01-22 09:16:32.2002635 +0800 CST