Go時代(Epoch)實例

程序中的一個常見要求是獲取自Unix紀元以來的秒數,毫秒或納秒數。這裏是如何在Go編程中做。
使用Unix或UnixNano的time.Now,分別以秒或納秒爲單位獲得自Unix紀元起的耗用時間。

注意,沒有UnixMillis,所以要獲取從紀元開始的毫秒數,需要手動除以納秒。

還可以將整數秒或納秒從曆元轉換爲相應的時間。

具體的 epoch 用法,可參考示例中的代碼 -

所有的示例代碼,都放在 F:\worksp\golang 目錄下。安裝Go編程環境請參考:http://www.yiibai.com/go/go\_environment.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