Go 範例:時間

Go 提供廣泛的時間和持續時間支援;以下是一些範例。

package main
import (
    "fmt"
    "time"
)
func main() {
    p := fmt.Println

我們將從取得目前時間開始。

    now := time.Now()
    p(now)

您可以提供年份、月份、日期等資訊來建立 time 結構。時間總會與 Location(即時區)關聯在一起。

    then := time.Date(
        2009, 11, 17, 20, 34, 58, 651387237, time.UTC)
    p(then)

您可以依照預期的方式擷取時間值的不同元件。

    p(then.Year())
    p(then.Month())
    p(then.Day())
    p(then.Hour())
    p(then.Minute())
    p(then.Second())
    p(then.Nanosecond())
    p(then.Location())

星期一到星期日的 Weekday 也可使用。

    p(then.Weekday())

這些方法比較兩個時間,分別測試第一個時間是否發生在第二個時間之前、之後或同時。

    p(then.Before(now))
    p(then.After(now))
    p(then.Equal(now))

Sub 方法會傳回一個 Duration,代表兩個時間之間的區間。

    diff := now.Sub(then)
    p(diff)

我們可以計算以各種單位為單位的時間長度。

    p(diff.Hours())
    p(diff.Minutes())
    p(diff.Seconds())
    p(diff.Nanoseconds())

您可以使用 Add 讓時間前進指定的時間,或使用 - 讓時間倒退指定的時間。

    p(then.Add(diff))
    p(then.Add(-diff))
}
$ go run time.go
2012-10-31 15:50:13.793654 +0000 UTC
2009-11-17 20:34:58.651387237 +0000 UTC
2009
November
17
20
34
58
651387237
UTC
Tuesday
true
false
false
25891h15m15.142266763s
25891.25420618521
1.5534752523711128e+06
9.320851514226677e+07
93208515142266763
2012-10-31 15:50:13.793654 +0000 UTC
2006-12-05 01:19:43.509120474 +0000 UTC

接下來我們將探討與 Unix 紀元相關的相對時間概念。

下一篇範例:紀元