为了账号安全,请及时绑定邮箱和手机立即绑定

将 MySQL 日期时间字符串转换为 time.Time 格式

将 MySQL 日期时间字符串转换为 time.Time 格式

Go
拉风的咖菲猫 2021-12-06 14:56:46
我只是无法将 SQL 日期时间 (MySQL) 值解析为一个time.Time值。我找不到适合 sql datetime 的布局。而且也不太明白这是如何工作的。我确实想象我不是第一个为此而苦苦挣扎的人,尽管我真的找不到我应该如何完成这项工作。输入:2015-12-23 00:00:00期望的输出:1450825200代码time, err := time.Parse(time.SomeSqlDateTimeLayout, "2015-12-23 00:00:00")timestamp := time.Unix()
查看完整描述

2 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

如果标准库中不存在时间格式,您可以创建自己的时间格式进行解析。


package main


import (

    "fmt"

    "time"

)


func main() {

    layout := "2006-01-02 15:04:05"

    str := "2015-12-23 00:00:00"

    t, err := time.Parse(layout, str)


    if err != nil {

        fmt.Println(err)

    }

    fmt.Println(t.Unix())

}

输出


1450828800

我不知道时间格式的官方文档是什么,但你可以在这里找到它,从第 64 行开始。


查看完整回答
反对 回复 2021-12-06
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

事实上,我不知道 Go 的标准库中有任何 ISO-8601 解析支持。


让我们使用最接近的 RFC-3309:


package main


import (

  "fmt"

  "time"

  "strings"

)


func main() {


  // convert iso-8601 into rfc-3339 format

  rfc3339t := strings.Replace("2015-12-23 00:00:00", " ", "T", 1) + "Z"


  // parse rfc-3339 datetime

  t, err := time.Parse(time.RFC3339, rfc3339t)

  if err != nil {

    panic(err)

  }


  // convert into unix time

  ut := t.UnixNano() / int64(time.Millisecond)


  fmt.Println(ut)

}

输出


1450828800000

游乐场:http : //play.golang.org/p/HxZCpxmjvg


希望这可以帮助!


查看完整回答
反对 回复 2021-12-06
  • 2 回答
  • 0 关注
  • 154 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信