我有时间字符串,格式如下:31 July 2023 21:06:36
。我想通过使用解析来腾出时间。所以我这样做了
dateStr := "20 July 2023 21:06:36" formatLayout := "31 July 2023 21:06:36" parsedTime, err := time.Parse(formatLayout, dateStr) if err != nil { return detail, err }
但出现错误 parsing time "31 July 2023 21:06:36": hour out of range
。然后我将格式布局更改为 02 January 2006 15:04:05
dateStr := "20 July 2023 21:06:36" formatLayout := "02 January 2006 15:04:05" parsedTime, err := time.Parse(formatLayout, dateStr) if err != nil { return detail, err }
它产生了正确的时间。我的问题是为什么如果使用 02 一月 2006 15:04:05
的布局它不会产生错误,但 31 七月 2023 21:06:36
会产生错误。它们的格式相同,对吗?
谢谢
Mon Jan 2 15:04:05 MST 2006
(或 01/02 03:04:05PM '06 -0700
)是 Layout
包中定义的 time
常量。
这样定义是因为时间的每个部分(日、月、年、时、分、秒、时区)都是不同的,因此作为布局使用很方便,因为它不包含不明确的字段。例如。月始终为 1,日始终为 2,等等。
您可以看到,这是 time
包用来执行解析的“特殊”时间。没什么更多的了。
另请参阅“Mon Jan 2 15”的起源:04:05 MST 2006”,golang。
以上是golang time.Parse错误小时超出范围相同格式的详细内容。更多信息请关注PHP中文网其他相关文章!