go - 用时间包的parse方法将mongodb字段值 "date"解析成golang

标签 go datetime-parsing

我已经 created_date列作为字符串,它的值类似于 2018-10-04 15:42:19.000404667 +0000 UTC m=+103.387519062我从mongo得到的db 列,现在我将其插入 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)
}

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

parsing time "2018-10-04 15:42:19.000404667 +0000 UTC m=+103.387519062" as "2006-01-02T15:04:05.999999999Z07:00": cannot parse " 15:42:19.000404667 +0000 UTC m=+103.387519062" as "T"

我尝试了不同的 consttime包,但仍在深入研究,我在这里缺少什么,或者我在解析错误 date类型。

谢谢。

最佳答案

除非已知 m=... 部分是常量(在这种情况下,您应该按原样将其包含在格式字符串中),您必须将其从输入字符串中删除在将其传递给 time.Parse() 之前。没有办法告诉 time.Parse() 它应该忽略输入的一部分(除非它总是相同的字符串)。

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

关于go - 用时间包的parse方法将mongodb字段值 "date"解析成golang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52741860/

相关文章:

go - 如何从 Go 中的标准输入扫描 big.Int

regex - Go:处理多行命令输出并解析

go - 如何使用 Go Modules 识别依赖链

java - 如何使用 LocalTime.parse 解析任何格式的时间?

go - 模板传递非 nil 对象在前端变为 nil

Go - 将 2 字节数组转换为 uint16 值

java - 解析小于 6 位的纳秒

javascript - 解析Javascript中自定义格式的 'Date & Time'字符串

java - Gson java.lang.IllegalArgumentException : No time zone indicator