平时开发过程中,时间相关的操作用的还是很多的。接下来就与大家一起总结下与时间有关的操作,主要涉及到 time 包,核心数据结构是 time.Time,如下:
1 | type Time struct { |
1. 获取时间相关函数
1.1 获取当前时间
1 | // 返回当前时间,注意此时返回的是 time.Time 类型 |
输出:
1 | 2022-12-25 09:19:37.135465 +0800 CST m=+0.004033001 |
返回当前年月日时分秒、星期几、一年中的第几天等操作
1 | package main |
1.2 格式化时间
Go 语言提供了时间类型格式化函数 Format(),需要注意的是 Go 语言格式化时间模板不是常见的 Y-m-d H:i:s,而是 2006-01-02 15:04:05,也很好记忆(2006 1 2 3 4 5)
1 | now := time.Now() |
2. 时间戳与日期字符串相互转化
时间戳怎么转成日期格式呢?需要先转成将时间戳转成 time.Time 类型再格式化成日期格式。
2.1 根据秒数、纳秒数返回 time.Time 类型
1 | package main |
2.2 根据指定时间返回 time.Time 类型
使用函数 time.Date()
1 | package main |
2.3 日期字符串解析成 time.Time 类型
1 | package main |
2.4 时间戳转日期
1 | var startTime, endTime int64 |
2.5 日期转时间戳
1 | package main |
3. 计算、比较日期
3.1 24小时之内的时间计算
1 | now := time.Now() |
3.2 24小时之外的时间计算
及到一天以外的时间计算,就需要用到 time.AddDate(),函数原型:
1 | func (t Time) AddDate(years int, months int, days int) Time |
比如我们想知道 一年一个月零一天 之后的时间,就可以这样:
1 | now := time.Now() |
再比如,我们想获得 2 天之前时间:
1 | now := time.Now() |
3.3 日期比较
日期的比较总共有三种:之前、之后和相等。
1 | // 如果 t 代表的时间点在 u 之前,返回真;否则返回假。 |
3.4 计算函数运行的时间
1 | func compute() { |