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))
}
|