Golang time.Time详解

在Golang中,time包提供了时间的表示和处理功能,其中最重要的类型就是time.Time。在本文中,我们将详细介绍Golang中的time.Time类型,包括其定义、常用方法和示例代码。
time.Time的定义
在Golang中,time.Time是一个结构体类型,用来表示时间。其定义如下:
type Time struct {
    // 内部包含了一个具体时间的纳秒数
    // 该纳秒数自UTC时间(2006-01-02 15:04:05.999999999 -0700 MST)以来的持续时间
    wall uint64
    // 当前时间所在的时区
    ext  int64
}
time.Time类型内部包含了一个持续时间的纳秒数和当前时间所在的时区。在Golang中,时间是以UTC时间(Coordinated Universal Time)表示的,即格林尼治标准时间。
time.Time的常用方法
1. Now()
Now方法返回当前的本地时间。
package main
import (
    "fmt"
    "time"
)
func main() {
    t := time.Now()
    fmt.Println(t)
}
运行结果如下:
2021-08-18 14:25:55.248522 +0800 CST m=+0.000277146
2. Add(d time.Duration)
Add方法返回时间t加上时间段d之后的时间。
package main
import (
    "fmt"
    "time"
)
func main() {
    t := time.Now()
    fmt.Println("当前时间:", t)
    t1 := t.Add(24 * time.Hour)
    fmt.Println("加上24小时后的时间:", t1)
}
运行结果如下:
当前时间: 2021-08-18 14:27:16.857707 +0800 CST m=+0.036365660
加上24小时后的时间: 2021-08-19 14:27:16.857707 +0800 CST
3. Sub(u time.Time)
Sub方法返回时间t和u之间的时间段。
package main
import (
    "fmt"
    "time"
)
func main() {
    t1 := time.Now()
    t2 := t1.Add(-3 * time.Hour)
    diff := t2.Sub(t1)
    fmt.Println("时间段:", diff)
}
运行结果如下:
时间段: -3h0m0s
使用time.Time计算时间间隔
time.Time类型还可以用来计算时间间隔,可以使用Sub方法得到两个时间点之间的时间差。比如,我们可以计算一个操作的耗时:
package main
import (
    "fmt"
    "time"
)
func main() {
    start := time.Now()
    // 模拟一个操作
    time.Sleep(2 * time.Second)
    end := time.Now()
    duration := end.Sub(start)
    fmt.Println("操作耗时:", duration)
}
运行结果如下:
操作耗时: 2.000306793s
结语
在本文中,我们介绋了Golang中time.Time类型的定义、常用方法和示例代码。
极客笔记