首页 > 解决方案 > 为什么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

任何帮助都会有所帮助。在此先感谢。

标签: go

解决方案


你的代码有问题。

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

你可以在这里查看结果


推荐阅读