猿问

在 Golang 中解析 UTC ISO8601 时间格式

我收到以下格式的日期:

2021-05-09T12:10:00+01:00

这显然是一个有效的日期格式:https://en.wikipedia.org/wiki/ISO_8601

我正在尝试在Go中解析该日期:

pt, err := time.Parse("2006-01-02T15:04:05+00:00", dt)

我也尝试过使用time.RFC3339

但两者似乎都没有选择时区。在这种情况下,我得到:

2021/05/10 21:02:02 http: panic serving [::1]:62125: parsing time "2021-05-09T12:10:00 01:00" as "2006-01-02T15:04:05+00:00": cannot parse " 01:00" as "+00:00"


莫回无
浏览 240回答 2
2回答

扬帆大鱼

问题是你的参数,而不是你应该有layout"2006-01-02T15:04:05+00:00"+00:00-07:00这应该有所帮助,package mainimport (    "fmt"    "time")func main() {    date := "2021-05-09T12:10:00+01:00"    layout := "2006-01-02T15:04:05-07:00"    t, err := time.Parse(layout, date)    if err != nil {        fmt.Println(err)    }    fmt.Println(t)}输出: 2021-05-09 12:10:00 +0100 +0100Playground: https://play.golang.org/p/UcrIDfJRcNV不要混淆为什么时区显示两次。它在这个答案中解释,Golang时间 - 时区显示两次特殊参数仅接受一组特定的有效数字。您可以在此处引用它们,https://yourbasic.org/golang/format-parse-string-time-date-example/layout

潇潇雨雨

您需要通过号码(不是):-7:00+1:00// pt, err := time.Parse("2006-01-02T15:04:05+1:00", dt) // not thispt, err :=    time.Parse("2006-01-02T15:04:05-07:00", dt) // thishttps://play.golang.org/p/n697vKUHSjD
随时随地看视频慕课网APP

相关分类

Go
我要回答