首页 > 后端开发 > Golang > 正文

Golang time库时间处理 格式化与时间计算

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

golang time库时间处理 格式化与时间计算

Go语言的

time
登录后复制
库提供了丰富的时间处理功能,包括时间的创建、格式化、解析、比较和计算。掌握这些操作对开发中处理日期时间非常关键。下面介绍常用的时间格式化方法和时间计算技巧。

时间格式化:使用固定的参考时间

Go语言中格式化时间不使用

yyyy-MM-dd HH:mm:ss
登录后复制
这类占位符,而是使用一个固定的参考时间:

Mon Jan 2 15:04:05 MST 2006

这个时间的每一位数字都是递增的: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.Time

使用

time.Parse
登录后复制
可以将字符串按指定格式转为
time.Time
登录后复制
类型。

注意:格式字符串依然使用Go的参考时间模板。

美间AI
美间AI

美间AI:让设计更简单

美间AI 45
查看详情 美间AI
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)
登录后复制

时间计算:Add、Sub与Until

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("当前时间在之后时间之前")
}
登录后复制

实用技巧与注意事项

处理时间时有几个容易忽略的点:

  • Go的格式化字符串必须严格匹配参考时间的数字顺序
  • 解析时间时若未指定时区,默认使用UTC
  • 建议统一使用
    time.Location
    登录后复制
    处理本地时间,避免时区混乱
  • 时间计算中
    Duration
    登录后复制
    支持
    Hours()
    登录后复制
    Minutes()
    登录后复制
    Seconds()
    登录后复制
    等方法获取浮点值

获取当前东八区时间:

shanghai, _ := time.LoadLocation("Asia/Shanghai")
now := time.Now().In(shanghai)
登录后复制

基本上就这些。Go的时间处理设计独特但一旦理解参考时间的逻辑,使用起来非常清晰和高效。

以上就是Golang time库时间处理 格式化与时间计算的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号