Go time包使用详解

7 min read

Go语言中的time包是与时间相关的包,提供了丰富的时间操作函数和类型。

基本时间类型(time.Time)

Go语言中的基本时间类型是time.Time。它表示一个具体的时间点。其中包含年月日时分秒纳秒等信息。

常用时间常量

虽然在Go语言中时间的类型比较复杂,但是提供了一些常量用来快速生成时间。

time.Now()函数

time.Now()可以获取当前的时间。

获取时间戳

获取当前时间的时间戳(秒级别):time.Now().Unix()。

获取指定时间的时间戳:time.Date(2021, 10, 1, 11, 15, 0, 0, time.Local).Unix()。

格式化时间

format 函数的使用方式比较灵活,可以对日期的各部分进行格式化,可以是时间戳或time.Time类型的字符串进行格式化。

时间戳格式化:

t := time.Now()
fmt.Println(t.Format("2006-01-02 15:04:05"))

time.Time类型格式化:

t := time.Now()
fmt.Println(t.Format("2006-01-02 15:04:05"))

也可以将日期字符串转换成time.Time类型进行格式化:

timeStr := "2021-10-01 11:15:00"
t, _ := time.ParseInLocation("2006-01-02 15:04:05", timeStr, time.Local)
fmt.Println(t.Format("2006-01-02 15:04:05"))

时间计算

Go语言中提供了Add函数用于时间的加减运算,例如:

t := time.Now()
d, _ := time.ParseDuration("24h")
t2 := t.Add(d)
fmt.Println(t2)

还可以使用Sub函数来计算时间之差,返回Duration类型,如下:

t1 := time.Date(2021, 10, 1, 11, 15, 0, 0, time.Local)
t2 := time.Date(2021, 10, 2, 8, 0, 0, 0, time.Local)
d := t2.Sub(t1)
fmt.Println(d.Hours())

总结

以上就是时间包time的基本用法介绍,大家可以通过重点理解常用常量、时间格式化、时间计算等几个方面,掌握该包的使用方法。