我试着将字符串解析为时间,这就是我所做的:
dateTime := fmt.Sprintf("%s %s CST", dateValue, timeValue)
date, err := time.Parse("2006-1-2 150405 MST", dateTime)
我收到以下错误消息:
parsing time "2012-4-9 174031 CST" as "2006-1-2 150405 MST": cannot parse "2012-4-9 174031 CST" as "2006"
从错误消息中,它显示我传入的dateTime
值是正确的。我也尝试过以下操作,它运行正常:
dateTime := "2012-4-9 174031 CST"
date, err := time.Parse("2006-1-2 150405 MST", dateTime)
这困扰了我好几天。任何人都可以帮忙指出错误在哪里?谢谢!
答案 0 :(得分:1)
您的价值观并非如您所愿。我怀疑你有一个或多个值的空格。下面是一个可以产生相同错误的示例(请注意dateValue上的前导空格):
https://play.golang.org/p/UwKhjQs6Nig
dateValue := " 2012-4-9"
timeValue := "174031"
dateTime := fmt.Sprintf("%s %s CST", dateValue, timeValue)
date, err := time.Parse("2006-1-2 150405 MST", dateTime)
如果遇到这样的问题,第一步是在使用它们之前打印您的值,以验证它们是否与您期望的完全一致。如果发帖求助,也尝试在play.golang.org上重现它 - 通常这样做的过程将帮助您自己找到问题。
错误信息可能更好,但我怀疑它正在做的是采用格式的第一部分(年),试图在字符串值中找到它并失败,因此报告找不到2006.