在GO中解析时间时出现奇怪的错误消息

时间:2017-12-31 08:42:37

标签: go

我试着将字符串解析为时间,这就是我所做的:

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)

这困扰了我好几天。任何人都可以帮忙指出错误在哪里?谢谢!

1 个答案:

答案 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.