Golang将dd/mm/yyyy格式日期字符串转为time类型报错怎么修复
错误原因
报错信息:2009/11/10 23:00:00 parsing time "29/12/2020": month out of range
该报错由time.Parse函数的布局参数填写错误导致。Go语言的时间解析逻辑不使用通用的yyyy、mm这类占位符,要求布局参数必须基于固定参考时间2006年1月2日 15:04:05编写,你当前用了月/日/年顺序的布局去解析日/月/年格式的字符串,会把29识别为月份值,自然超出月份的合法范围。
修复方法
- 要解析
dd/mm/yyyy格式的日期,需要把布局参数调整为日/月/年顺序的参考时间写法02/01/2006,参考代码如下:
package main import ( "fmt" "time" ) func main() { dateStr := "29/12/2020" // 02对应日期、01对应月份、2006对应年份,和dd/mm/yyyy顺序完全匹配 layout := "02/01/2006" parseRes, err := time.Parse(layout, dateStr) if err != nil { fmt.Println("解析错误:", err) return } fmt.Println("解析得到的时间:", parseRes) }
内容的提问来源于stack exchange,提问作者shekwo
相关产品推荐
相关产品推荐

