You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Golang时间解析失败求助:无法解析2023-01-31T10:44:59.800格式时间

问题分析与解决

你的时间解析失败主要有三个核心问题:

  • 布局格式与输入不匹配:输入时间用T分隔日期和时间,而你的布局用的是空格;同时输入包含毫秒部分.800,布局里完全没对应处理。
  • pm标记无效:你用的15是Go时间布局里的24小时制小时标记(对应0-23),pm是12小时制的后缀,两者不能混用——24小时制不需要am/pm标记,强行加反而会导致解析失败。
  • 错误信息模糊:你自己封装了错误,丢失了time.Parse返回的原始错误,这才导致你无法定位问题,应该把原始错误也带上。

正确的解析代码

针对输入格式2023-01-31T10:44:59.800,正确的布局应该是2006-01-02T15:04:05.000,代码示例:

t, err := time.Parse("2006-01-02T15:04:05.000", s)
if err != nil {
    return time.Time{}, fmt.Errorf("could not parse time %q: %w", s, err)
}

如果是移除T后的格式2023-01-31 10:44:59.800,布局改成2006-01-02 15:04:05.000即可。

关键说明

  • Go的时间布局必须严格对应输入字符串的每个字符,包括分隔符(T/空格)、小数点等,差一个字符都会解析失败。
  • 24小时制用15,12小时制用03,且12小时制才需要搭配pm/am标记,比如布局01/02/06 03:04:05 pm对应输入01/31/23 10:44:59 am。
  • 保留time.Parse的原始错误(用%w包裹),能直接看到具体不匹配的位置,比如parsing time "2023-01-31T10:44:59.800" as "2006-01-02 15:04:05 pm": cannot parse "T10:44:59.800" as " ",这样一眼就能找到问题。

内容的提问来源于stack exchange,提问作者N P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 07:12:41