我知道我需要在GoLang中使用时间布局(如https://golang.org/src/time/format.go所示)但我找不到ISO 8601时间戳的布局。
如果有帮助,我会从Facebook API获取时间戳。以下是一个示例时间戳:2016-07-25T02:22:33+0000
答案 0 :(得分:10)
我发现这个布局有效:“2006-01-02T15:04:05-0700”
答案 1 :(得分:1)
RFC3339等同于ISO 8601.具体来说,它具有相同的格式,RFC3339只有更严格的要求(例如,它需要一个完整的日期表示,年份为4位)。
What's the difference between ISO 8601 and RFC 3339 Date Formats?
因此,您可以使用常量time.RFC3339
作为布局。
答案 2 :(得分:1)
这里的问题是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"
答案 3 :(得分:0)
你必须使用日期的一些布局。
data := "2022-01-24T00:00:00.000-03:00"
layout := "2006-01-02T15:04:05.000-03:00"
dataTime, err := time.Parse(layout, data)
答案 4 :(得分:-3)
对于使用Swift 4进行Cocoa开发的任何人,在使用Date
策略将.iso8601
编码为JSON时:
let encoder = JSONEncoder()
encoder.dateEncodingStrategy = .iso8601
if let encodedData = try? encoder.encode(myStruct) {
...
}
在Go中解析它的正确格式字符串将是:
2006-01-02T15:04:05.99999Z07:00