問題內容
我有時間字符串,格式如下: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。