Go时间包
一、简介
go 语言中使用time.Time表示时间。我们可以通过time.Now函数获取当前的时间对象,然后从时间对象中可以获取到年、月、日、时、分、秒等信息。
package main |
输出:
当前时间:2022-05-19 21:38:39.7367663 +0800 CST m=+0.001805001 |
二、常量
time 包中定义的时间间隔类型的常量如下:
const ( |
例如:time.Hour表示1小时,time.Second表示1秒。
三、func (t Time) Add(d Duration) Time
求一个小时之后的时间:
func main() { |
四、func (t Time) Sub(u Time) Duration
求两个时间之间的差值:
返回一个时间段t-u。如果结果超出了Duration可以表示的最大值/最小值,将返回最大值/最小值。要获取时间点t-d(d为Duration),可以使用t.Add(-d)。
例如
t := time.Now() |
输出:
1h0m0s |
五、func (t Time) Equal(u Time) bool
判断两个时间是否相同,会考虑时区的影响,因此不同时区标准的时间也可以正确比较。本方法和用t==u不同,这种方法还会比较地点和时区信息。
六、func (t Time) Before(u Time) bool
如果t代表的时间点在u之前,返回真;否则返回假。
七、func (t Time) After(u Time) bool
如果t代表的时间点在u之后,返回真;否则返回假。
八、time.Format
time.Format函数能够将一个时间对象格式化输出为指定布局的文本表示形式,需要注意的是 Go 语言中时间格式化的布局不是常见的Y-m-d H:M:S,而是使用 2006-01-02 15:04:05.000
其中:
2006:年(Y) |
————————-补充————————–
如果想格式化为12小时格式,需在格式化布局中添加PM。
小数部分想保留指定位数就写0,如果想省略末尾可能的0就写 9。
// formatDemo 时间格式化 |
九、解析字符串格式的时间
对于从文本的时间表示中解析出时间对象,time包中提供了time.Parse和time.ParseInLocation两个函数。
- time.Parse在解析时不需要额外指定时区信息。
// parseDemo 指定时区解析时间 |
- time.ParseInLocation函数需要在解析时额外指定时区信息。
// parseDemo 解析时间
func parseDemo() {
now := time.Now()
fmt.Println(now)
// 加载时区
loc, err := time.LoadLocation("Asia/Shanghai")
if err != nil {
fmt.Println(err)
return
}
// 按照指定时区和指定格式解析字符串时间
timeObj, err := time.ParseInLocation("2006/01/02 15:04:05", "2022/10/05 11:25:20", loc)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(timeObj)
fmt.Println(timeObj.Sub(now))
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Bai's Blog!