0

0

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

P粉602998670

P粉602998670

发布时间:2025-08-28 11:40:01

|

685人浏览过

|

来源于php中文网

原创

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的参考时间模板。

网奇Eshop网络商城系统
网奇Eshop网络商城系统

网奇.NET网络商城系统是基于.Net平台开发的免费商城系统。功能强大,操作方便,设置简便。无需任何设置,上传到支持asp.net的主机空间即可使用。系统特色功能:1、同时支持Access和SqlServer数据库;2、支持多语言、多模板3、可定制缺货处理功能4、支持附件销售功能5、支持会员组批发功能6、提供页面设计API函数7、支持预付款功能8、配送价格分地区按数学公式计算9、商品支持多类别,可

下载
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()

// 1小时后 later := now.Add(time.Hour)

// 30分钟后 after30 := now.Add(30 * time.Minute)

// 2天前 before2days := now.Add(-48 * time.Hour)

// 计算两个时间的间隔 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如何定义变量
golang如何定义变量

golang定义变量的方法:1、声明变量并赋予初始值“var age int =值”;2、声明变量但不赋初始值“var age int”;3、使用短变量声明“age :=值”等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

178

2024.02.23

golang有哪些数据转换方法
golang有哪些数据转换方法

golang数据转换方法:1、类型转换操作符;2、类型断言;3、字符串和数字之间的转换;4、JSON序列化和反序列化;5、使用标准库进行数据转换;6、使用第三方库进行数据转换;7、自定义数据转换函数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

226

2024.02.23

golang常用库有哪些
golang常用库有哪些

golang常用库有:1、标准库;2、字符串处理库;3、网络库;4、加密库;5、压缩库;6、xml和json解析库;7、日期和时间库;8、数据库操作库;9、文件操作库;10、图像处理库。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

339

2024.02.23

golang和python的区别是什么
golang和python的区别是什么

golang和python的区别是:1、golang是一种编译型语言,而python是一种解释型语言;2、golang天生支持并发编程,而python对并发与并行的支持相对较弱等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

209

2024.03.05

golang是免费的吗
golang是免费的吗

golang是免费的。golang是google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的开源编程语言,采用bsd开源协议。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

391

2024.05.21

golang结构体相关大全
golang结构体相关大全

本专题整合了golang结构体相关大全,想了解更多内容,请阅读专题下面的文章。

196

2025.06.09

golang相关判断方法
golang相关判断方法

本专题整合了golang相关判断方法,想了解更详细的相关内容,请阅读下面的文章。

191

2025.06.10

golang数组使用方法
golang数组使用方法

本专题整合了golang数组用法,想了解更多的相关内容,请阅读专题下面的文章。

192

2025.06.17

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

43

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
golang socket 编程
golang socket 编程

共2课时 | 0.1万人学习

nginx浅谈
nginx浅谈

共15课时 | 0.8万人学习

golang和swoole核心底层分析
golang和swoole核心底层分析

共3课时 | 0.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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