
我有时间字符串,格式如下: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 会产生错误。它们的格式相同,对吗?
谢谢
立即学习“go语言免费学习笔记(深入)”;
正确答案
Mon Jan 2 15:04:05 MST 2006(或 01/02 03:04:05PM '06 -0700)是 Layout 包中定义的 time 常量。
这样定义是因为时间的每个部分(日、月、年、时、分、秒、时区)都是不同的,因此作为布局使用很方便,因为它不包含不明确的字段。例如。月始终为 1,日始终为 2,等等。
您可以看到,这是 Layout 包用来执行解析的“特殊”时间。没什么更多的了。










