Go语言如何将日期字符串Oct 10 2022转换为time对象?
解决Go语言日期字符串转time对象的问题
你的问题出在格式字符串不匹配:time.ANSIC对应的格式是"Mon Jan _2 15:04:05 2006",包含时分秒部分,但你的输入字符串"Oct 10 2022"只有月份、日期、年份,缺少时间信息,导致解析失败,忽略错误后就返回了零值时间0001-01-01 00:00:00 +0000 UTC。
正确的做法是使用与输入字符串完全匹配的自定义格式字符串:
- Go语言的日期格式通过参考时间
Mon Jan 2 2006定义,你需要根据输入结构对应写出格式。 - 对于
"Oct 10 2022",对应的格式字符串是"Jan _2 2006"(_2用来兼容个位数日期前的空格,比如"Oct 5 2022"这类场景)。
修正后的代码示例:
package main import ( "fmt" "time" ) func main() { date := "Oct 10 2022" layout := "Jan _2 2006" output, err := time.Parse(layout, date) if err != nil { fmt.Println("解析错误:", err) return } fmt.Println(output) }
运行代码会输出:2022-10-10 00:00:00 +0000 UTC,即正确的time对象。
注意:永远不要忽略time.Parse返回的错误,它能帮你快速定位格式不匹配等问题。
内容的提问来源于stack exchange,提问作者kiran
相关产品推荐
相关产品推荐

