【问题标题】:Parsing mysql datetime to golang time将mysql datetime解析为golang时间
【发布时间】:2018-09-23 03:20:15
【问题描述】:

我的表中有 MySQL 日期时间,采用 MySQL 标准格式,例如

“2018-09-19 18:26:32.000000”

当我尝试使用 time.parse() 函数将其转换为 golang 时间时,我得到了错误

解析时间“2018-09-19 18:26:32.000000”:超出范围的月份

我尝试在网上搜索,该格式似乎被许多人允许并常用来成功解析。

谁能帮我解决我所缺少的问题?下面是我正在使用的代码 sn-p。

import (
    "fmt"
    "time"
)

layout := "2018-09-19 18:26:32.000000"
fmt.Println(val)
// prints 2018-09-19 18:26:32.000000
t, err := time.Parse(layout, val)
fmt.Println(fmt.Println(t.Unix()))
// prints -62135596800 
fmt.Println(err)
// prints parsing time "2018-09-19 18:26:32.000000": month out of range

【问题讨论】:

    标签: mysql go


    【解决方案1】:

    你的布局不对,应该是"2006-01-02 15:04:05.000000"。文档指出:

    Parse 解析一个格式化的字符串并返回它的时间值 代表。布局通过显示参考如何定义格式 时间,定义为

    2006 年 1 月 2 日星期一 15:04:05 -0700 MST

    如果是值就会被解释;它用作输入格式的示例。然后将对输入字符串进行相同的解释。

    package main
    
    import (
        "fmt"
        "time"
    )
    
    func main() {
    
        val := "2018-09-19 18:26:32.000000"
        layout := "2006-01-02 15:04:05.000000"
        t, _ := time.Parse(layout, val)
        fmt.Println(t.Unix()) // prints 1537381592
    }
    

    输出

    1537381592
    

    试试here

    【讨论】:

      猜你喜欢
      • 2015-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-23
      • 2021-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多