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



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

当前代码似乎有效,直到您输入不同的日期,然后我得到如下所示的随机失败。

代码如下:

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任何帮助都会有所帮助 提前谢谢。

你的代码有问题。

  1. 变量的顺序是错误的。yy, mm, dd = 11, 27, 2019应该是yy, mm, dd = 2019, 11, 27.
  2. 不要忽略错误。如果你有问题,只需打印它会有很多帮助(或者更好的是写一个测试(
  3. 您的格式错误。它的形式应该像fmt.Sprintf("%d-%02d-%02d", yy, mm, dd)

您可以在此处查看结果

最新更新