Go语言时间处理基于固定参考时间Mon Jan 2 15:04:05 MST 2006进行格式化和解析,使用Format方法按模板格式化时间,Parse和ParseInLocation用于字符串解析,支持时区处理;通过Add、Sub进行时间加减计算,After、Before、Equal实现时间比较,Duration提供时间差的数值转换,建议统一使用time.Location处理本地时区以避免混乱。

Go语言的
time
Go语言中格式化时间不使用
yyyy-MM-dd HH:mm:ss
这个时间的每一位数字都是递增的:1月2日3点4分5秒6年。只要按照这个模板写格式字符串即可。
常见格式化示例:
立即学习“go语言免费学习笔记(深入)”;
2006-01-02 15:04:05
2006-01-02
15:04:05
2006/01/02
Jan 2, 2006
代码示例:
now := time.Now()
formatted := now.Format("2006-01-02 15:04:05")
fmt.Println(formatted) // 输出:2024-04-05 14:23:10
使用
time.Parse
time.Time
注意:格式字符串依然使用Go的参考时间模板。
str := "2024-04-05 10:00:00"
t, err := time.Parse("2006-01-02 15:04:05", str)
if err != nil {
log.Fatal(err)
}
fmt.Println(t)
如果字符串包含时区信息,建议使用
time.ParseInLocation
loc, _ := time.LoadLocation("Asia/Shanghai")
t, _ := time.ParseInLocation("2006-01-02 15:04:05", str, loc)
Go的时间计算非常直观,支持加减时间间隔和两个时间之间的差值。
1. 加减时间(Add/Sub)
Add(time.Duration)
Sub(time.Time)
Duration
now := time.Now() <p>// 1小时后 later := now.Add(time.Hour)</p><p>// 30分钟后 after30 := now.Add(30 * time.Minute)</p><p>// 2天前 before2days := now.Add(-48 * time.Hour)</p><p>// 计算两个时间的间隔 duration := later.Sub(now) // 返回1h0m0s fmt.Println(duration.Hours()) // 1 fmt.Println(duration.Minutes()) // 60
2. 时间比较
After()
Before()
Equal()
if now.Before(later) {
fmt.Println("当前时间在之后时间之前")
}
处理时间时有几个容易忽略的点:
time.Location
Duration
Hours()
Minutes()
Seconds()
获取当前东八区时间:
shanghai, _ := time.LoadLocation("Asia/Shanghai")
now := time.Now().In(shanghai)
基本上就这些。Go的时间处理设计独特但一旦理解参考时间的逻辑,使用起来非常清晰和高效。
以上就是Golang time库时间处理 格式化与时间计算的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号