我无法设法将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()
答案 0 :(得分:10)
如果标准库中不存在,您可以创建自己的解析格式。
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行找到here。
答案 1 :(得分:2)
实际上,我不知道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
希望这有帮助!