Swift: 如何解析带有时区缩写的日期和时间字符串?

Swift: How to parse date & time string with timezone abbreviation?

我从服务器收到一个日期和时间字符串,其中包含以不寻常方式格式化的时区信息:

2017-05-05T12:24:16.286462Z[UTC]

我想用DateFormatter解析它,但我不知道应该使用什么日期格式。

我尝试用 "yyyy-MM-dd'T'HH:mm:ss.SSSZ'['R']'" 或类似的东西解析它,但没有成功。

这是我的代码:

let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en-US")
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ'['R']'"
let date = dateFormatter.date(from: date)

此字符串的正确日期格式是什么?

好的伙计们,我明白了。

正确的格式是

"yyyy-MM-dd'T'HH:mm:ss.SSS'Z['zzz']'"

zzz 用于时区缩写,而 Z[] 被视为纯文本。

ISO8601DateFormatter 的另一种方法。 [UTC] 部分用正则表达式

去除
let dateString = "2017-05-05T12:24:16.286462Z[UTC]"

let formatter = ISO8601DateFormatter()
formatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds]
let date = formatter.date(from: dateString.replacingOccurrences(of: "\[^\[+\]", with: "", options: .regularExpression))