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

在 Golang 中解析 UTC ISO8601 时间格式

在 Golang 中解析 UTC ISO8601 时间格式

Go
莫回无 2022-08-30 15:05:52
我收到以下格式的日期: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"
查看完整描述

2 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

问题是你的参数,


而不是你应该有layout"2006-01-02T15:04:05+00:00"+00:00-07:00


这应该有所帮助,


package main


import (

    "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 +0100

Playground: https://play.golang.org/p/UcrIDfJRcNV


不要混淆为什么时区显示两次。

它在这个答案中解释,Golang时间 - 时区显示两次


特殊参数仅接受一组特定的有效数字。您可以在此处引用它们,

https://yourbasic.org/golang/format-parse-string-time-date-example/layout


查看完整回答
反对 回复 2022-08-30
?
潇潇雨雨

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

您需要通过号码(不是):-7:00+1:00


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


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

https://play.golang.org/p/n697vKUHSjD


查看完整回答
反对 回复 2022-08-30
  • 2 回答
  • 0 关注
  • 239 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号