使用时间包的解析方法将mongo db字段的值“ date”解析为golang

时间:2018-10-10 13:53:25

标签: go datetime-parsing

我已经将created_date列作为字符串和它的值,就像我从2018-10-04 15:42:19.000404667 +0000 UTC m=+103.387519062 db列中得到的mongo一样,现在将其插入到mysql表和当然是string类型的。现在的问题是我无法对其进行解析和格式化,在这里我尝试使用下面的代码进行解析,但无法获得解决方案。

tm, err := time.Parse("2006-02-01", "2018-10-04 15:42:19.000404667 +0000 UTC m=+103.387519062")
if err != nil {
    fmt.Println(err)
}

它打印出一些错误,例如:

  

将时间“ 2018-10-04 15:42:19.000404667 +0000 UTC m = + 103.387519062”解析为“ 2006-01-02T15:04:05.999999999Z07:00”:无法解析“ 15:42:19.000404667 +0000 UTC m = + 103.387519062“为” T“

我尝试使用const包中的其他time包,但仍在研究其中,这是我所缺少的,还是我在解析错误的date类型。

谢谢。

1 个答案:

答案 0 :(得分:1)

除非已知m=...部分是常量(在这种情况下,应按原样将其包括在格式字符串中),否则必须先将其从输入字符串中剥离,然后再传递给{{1 }}。无法告诉time.Parse()应该忽略输入的一部分(除非它始终是相同的字符串)。

请注意,您应该提供完整的时间说明符作为格式,而不仅仅是“ 2006-02-01”,因为如果您不这样做,该库将以其自己的方式扩展它,以包括小时,分钟和秒-不一定是您想要的方式(在您的情况下,它会自动添加time.Parse()-但您输入的数据在日期后包含空格,而不是T15:04:05.999999999Z07:00,因此不会匹配)。就您而言(根据示例输入数据判断),格式字符串应如下所示:T