Golang使用time.Parse解析日期报unexpected "e"错误如何解决
问题根因
Go 标准库time包的日期解析采用固定参考时间占位符规则,不同写法的月份占位符对应匹配的格式完全不同:
Jan仅匹配3个字母的月份缩写,比如Jun、Jan、FebJanuary才对应完整拼写的月份名,比如June、January、March
原先使用的布局字符串是Jan, 02 2006,解析器读到June时,匹配到前3个字符Jun就判定月份字段解析结束,接下来预期读取逗号分隔符,实际读到的是剩余字母e,就触发了报错。
修复方法
将布局字符串中的月份占位符从Jan替换为January即可,修正后的可运行代码:
package main import ( "fmt" "time" ) func main() { parseTime, err := time.Parse("January, 02 2006", "June, 24 2022") if err != nil { fmt.Printf("解析失败: %v\n", err) return } fmt.Printf("解析成功: %v\n", parseTime) }
代码运行输出:
解析成功: 2022-06-24 00:00:00 +0000 UTC
常用月份占位符参考
- 带前导零的数字月份:
01,匹配06、01这类格式 - 不带前导零的数字月份:
1,匹配6、1这类格式 - 3位缩写月份名:
Jan - 完整拼写月份名:
January
内容的提问来源于stack exchange,提问作者daisy
相关产品推荐
相关产品推荐

