为什么golang时间函数在某些日期失效

为什么golang时间函数在某些日期失效,go,Go,我已经检查了解决此问题的其他建议,但它们不起作用 当前代码似乎可以工作,直到您输入不同的日期,然后我得到如下随机失败 代码如下: yy, mm, dd = 11, 27, 2019 s_yy, s_mm, s_dd = 11, 1, 2019 e_yy, e_mm, e_dd = 1, 1, 2020 input := fmt.Sprintf("%d-%d-%d", yy, mm, dd) input += "T15:04:05.000-07:00" t, _ := time.Parse("2

我已经检查了解决此问题的其他建议,但它们不起作用

当前代码似乎可以工作,直到您输入不同的日期,然后我得到如下随机失败

代码如下:

yy, mm, dd = 11, 27, 2019
s_yy, s_mm, s_dd = 11, 1, 2019
e_yy, e_mm, e_dd = 1, 1, 2020

input := fmt.Sprintf("%d-%d-%d", yy, mm, dd)
input += "T15:04:05.000-07:00"
t, _ := time.Parse("2006-01-02T15:04:05.000-07:00", input)

input_s := fmt.Sprintf("%d-%d-%d", s_yy, s_mm, s_dd)
input_s += "T15:04:05.000-07:00"
t_s, _ := time.Parse("2006-01-02T15:04:05.000-07:00", input_s)

input_e := fmt.Sprintf("%d-%d-%d", e_yy, e_mm, e_dd)
input_e += "T15:04:05.000-07:00"
t_e, _ := time.Parse("2006-01-02T15:04:05.000-07:00", input_e)

fmt.Println("t = ", t, "  t_s = ", t_s, "  t_e", t_e)
结果如下:

t=2019-12-27 15:04:05-0700-0700 t_s=0001-01-01 00:00:00+0000 UTC t_e 0001-01-01 00:00:00+0000 UTC

任何帮助都是帮助
提前感谢。

您的代码有问题

变量的顺序错误。 2019年11月27日应为2019年11月27日。 不要忽视这个错误。如果你有问题,只要把它打印出来就会有很大帮助,或者写一个测试就更好了 你的格式不对。它的形式应类似于fmt.Sprintf%d-%02d-%02d,yy,mm,dd
您可以检查结果

这些都不是有效日期,您正在尝试将11-27-2019T15:04:05.000-07:00、11-1-2019T15:04:05.000-07:00和1-1-2020T15:04:05.000-07:00解析为YYYY-MM-DD(当它们是M-D-YYYYYY时)。不要忽略来自时间的错误。解析,它们会告诉你什么是错误的。请确保它们的顺序正确,并且您的月/日在Sprintf格式字符串中使用%02d具有领先的0。感谢该格式字符串是修复程序。我指定了用于编写坏代码的输入