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

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

P粉602998670
发布: 2025-08-21 08:39:01
原创
669人浏览过
Go语言time包通过“2006-01-02 15:04:05”布局格式实现时间格式化与解析,使用Format方法格式化时间,Parse解析字符串为时间,Sub计算时间差,Add进行时间加减,支持多种预定义格式和Duration单位操作,适用于日志记录、耗时统计等场景。

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

Go语言的time包提供了丰富的时间处理功能,包括时间的获取、格式化、解析以及时间差计算。在实际开发中,这些功能非常常用,比如记录日志时间、计算任务耗时、处理用户输入的时间等。

时间格式化:使用Layout常量或自定义格式

Go语言中格式化时间的方式和其他语言不同,它不使用%Y-%m-%d这样的占位符,而是使用一个固定的参考时间来定义格式:

参考时间: Mon Jan 2 15:04:05 MST 2006

这个时间的每个部分对应一个特定的数值:年(2006)、月(1)、日(2)、小时(15)、分钟(4)、秒(5)。只要按照这个顺序构造格式字符串即可。

立即学习go语言免费学习笔记(深入)”;

示例:

  • time.Now().Format("2006-01-02 15:04:05")
    登录后复制
    → 输出如
    2025-04-05 14:23:10
    登录后复制
  • time.Now().Format(time.RFC3339)
    登录后复制
    → 使用预定义常量,输出
    2025-04-05T14:23:10Z
    登录后复制
  • time.Now().Format("2006/01/02")
    登录后复制
    2025/04/05
    登录后复制

常见预定义格式:

  • time.RFC3339
    登录后复制
    :标准Web常用格式
  • time.Kitchen
    登录后复制
    :12小时制时间(如 3:04PM)
  • time.Stamp
    登录后复制
    :"Jan _2 15:04:05" 格式

解析字符串为时间:time.Parse

将字符串转换为time.Time类型时,使用

time.Parse
登录后复制
,第一个参数是格式模板,第二个是待解析的字符串。

示例:

str := "2025-04-05 10:30:00"
t, err := time.Parse("2006-01-02 15:04:05", str)
if err != nil {
    log.Fatal(err)
}
fmt.Println(t)
登录后复制

注意:如果时区信息缺失,默认使用UTC。若需本地时区,可使用

time.ParseInLocation
登录后复制
并指定位置。

黑色全屏自适应的H5模板
黑色全屏自适应的H5模板

黑色全屏自适应的H5模板 HTML5的设计目的是为了在移动设备上支持多媒体。新的语法特征被引进以支持这一点,如video、audio和canvas 标记。HTML5还引进了新的功能,可以真正改变用户与文档的交互方式,包括: 新的解析规则增强了灵活性 淘汰过时的或冗余的属性 一个HTML5文档到另一个文档间的拖放功能 多用途互联网邮件扩展(MIME)和协议处理程序注册 在SQL数据库中存

黑色全屏自适应的H5模板 56
查看详情 黑色全屏自适应的H5模板

计算时间差:Sub方法

两个time.Time类型的时间可以通过

Sub
登录后复制
方法计算差值,返回
time.Duration
登录后复制
类型。

示例:

start := time.Now()
// 模拟操作
time.Sleep(2 * time.Second)
end := time.Now()
<p>duration := end.Sub(start)
fmt.Printf("耗时: %v 秒\n", duration.Seconds())
fmt.Printf("耗时: %v 毫秒\n", duration.Milliseconds())
登录后复制

Duration还支持多种单位提取:

  • d.Seconds()
    登录后复制
    :浮点秒数
  • d.Milliseconds()
    登录后复制
    :毫秒
  • d.Minutes()
    登录后复制
    :分钟
  • d.Hours()
    登录后复制
    :小时

也可用于判断时间间隔是否超过某个阈值:

if duration > 5*time.Second {
    fmt.Println("操作超时")
}
登录后复制

时间加减操作:Add方法

对时间进行加减使用

Add
登录后复制
方法,传入一个Duration。

示例:

  • t.Add(24 * time.Hour)
    登录后复制
    → 加一天
  • t.Add(-1 * time.Hour)
    登录后复制
    → 减一小时
  • t.AddDate(0, 1, 0)
    登录后复制
    → 加一个月(更精确的日期加减)

注意:

AddDate
登录后复制
可以单独加年、月、日,避免因月份天数不同导致的问题。

基本上就这些。Go的时间处理设计看似奇怪,但一旦记住“2006-01-02 15:04:05”这个模板,使用起来非常直观。格式化、解析、差值计算都简洁高效,适合大多数服务端场景。

以上就是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号