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类型的定义、常用方法和示例代码。