通八洲科技

如何在Golang中使用time处理时间_Golang time时间解析与格式化方法

日期:2026-01-01 00:00 / 作者:P粉602998670
time.Parse 报错的根本原因是格式字符串与时间字符串不严格匹配,Go 使用固定参考时间“Mon Jan 2 15:04:05 MST 2006”定义格式,空格、时区、毫秒位数等必须完全一致,且不支持中文或模糊匹配。

time.Parse 解析字符串时间时为什么总是报错 parsing time?

根本原因通常是格式字符串和待解析时间字符串不严格匹配。Go 的 time.Parse 不接受模糊匹配,连空格、时区缩写、毫秒位数都必须完全一致。

time.Format 输出时间字符串时如何控制时区和精度?

time.Format 输出结果完全取决于该 time.Time 值内部携带的时区信息,而非格式字符串本身。同一个格式字符串,在不同时区值上调用,输出的小时/分钟甚至日期都可能不同。

time.ParseInLocation 和 time.LoadLocation 处理不同时区的正确姿势

当明确知道输入字符串所属时区(比如日志里写的是“2025-12-25 10:00:00 CST”),又不想依赖系统本地时区,就得用 time.ParseInLocation,而不是直接 time.Parse

loc, _ := time.LoadLocation("Asia/Shanghai")
t, _ := time.ParseInLocation("2006-01-02 15:04:05", "2025-12-25 10:00:00", loc)

time.UnixMilli 和 time.UnixMicro 在处理毫秒/微秒时间戳时的边界陷阱

Go 1.17+ 引入了 time.UnixMillitime.UnixMicro,它们比手写 time.Unix(ts/1000, (ts%1000)*1e6) 更安全,但仍有易忽略的细节。

时区名称、格式字符串、时间戳类型这三处最容易埋坑,尤其是多人协作时各自假设“CST 就是北京时间”或“字符串没时区就等于本地时间”,线上出问题往往就卡在这几个点上。