通八洲科技

Golang如何处理时间类型_Golang time包常见语法基础

日期:2025-12-17 00:00 / 作者:P粉602998670
Go的time包基于time.Time和time.Duration类型,通过固定参考时间"Mon Jan 2 15:04:05 MST 2006"定义layout进行时间解析与格式化,使用time.Now()、time.Date()、time.Parse()创建时间,Format()输出,Add()、Sub()、Before()、After()、Equal()完成计算比较,推荐显式指定时区如UTC或LoadLocation,并用Unix()等方法处理时间戳,避免精度丢失。

Go 的 time 包是处理时间最核心、最常用的工具,它不依赖系统时区配置,所有操作都基于 time.Time 类型和 time.Duration 类型,清晰、安全、不易出错。

创建和解析时间

Go 中时间必须显式创建,不能像字符串那样直接赋值。常用方式有:

例如:time.Parse("2006-01-02 15:04:05", "2025-05-20 10:30:45") 可正确解析;而用 "YYYY-MM-DD" 会失败。

格式化输出时间

t.Format(layout)time.Time 转为字符串。layout 规则同上,仍基于参考时间:

时间计算与比较

时间运算通过 Duration 类型完成,它是纳秒级整数,支持加减:

⚠️ 避免用 t1.Unix() == t2.Unix() 判断相等——会丢失纳秒精度,应直接用 t1.Equal(t2)

时区与时间戳处理

Go 默认使用本地时区,但推荐显式指定以避免歧义:

基本上就这些。time 包设计克制,没有“昨天”“下个月”这类模糊方法,靠组合基础操作实现逻辑,看似多写几行,实则稳定可控。