我知道我需要在GoLang中使用时间布局(如此处所示https://golang.org/src/time/format.go),但我无法找到ISO 8601时间戳的布局。如何在GoLang中解析ISO 8601时间戳?
如果有帮助,我会从Facebook API获取时间戳。下面是一个例子时间戳:2016-07-25T02:22:33+0000
我知道我需要在GoLang中使用时间布局(如此处所示https://golang.org/src/time/format.go),但我无法找到ISO 8601时间戳的布局。如何在GoLang中解析ISO 8601时间戳?
如果有帮助,我会从Facebook API获取时间戳。下面是一个例子时间戳:2016-07-25T02:22:33+0000
我发现这个布局的工作: “2006-01-02T15:04:05-0700”
RFC3339相当于ISO 8601具体而言,它具有相同的格式,RFC3339只是有更严格的要求(例如,它需要4位数年份的完整日期表示)。
What's the difference between ISO 8601 and RFC 3339 Date Formats?
所以,你可以使用常量time.RFC3339
为您的布局。
这里的问题是RFC3339 requires区域偏移量被赋予“+00:00”(或者在UTC的情况下为“Z”),而ISO8601允许它为“+0000”。
从RFC3339:
[...] time-numoffset = ("+"/"-") time-hour ":" time-minute time-offset = "Z"/time-numoffset [...] full-time = partial-time time-offset date-time = full-date "T" full-time
因此而不是time.RFC3339
布局
"2006-01-02T15:04:05Z07:00"
,你必须使用:
"2006-01-02T15:04:05Z0700"
我不知道为什么这个答案被击倒投票即'time.RFC3339'不起作用,但这种布局工作。 – witoong623
'time.RFC3339'不适用于ISO 8601.示例:https://play.golang.org/p/gIi7D5KuWa –