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

问题描述 投票:0回答:1

我尝试解析字符串到时间,这是我做的:

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)

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

go
1个回答
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。

© www.soinside.com 2019 - 2024. All rights reserved.