从字符串 iOS swift 5 转换日期

Convert date from string iOS swift 5

我正在尝试使用以下代码将 'Wed Oct 14 2020 05:31:08 GMT+0000 (Coordinated Universal Time)' 这个日期字符串转换为 swift 日期

let DATE_FORMAT = "E MMM dd yyyy HH:mm:ss z"

let isoDate = "Wed Oct 14 2020 05:31:08 GMT+0000 (Coordinated Universal Time)"

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = DATE_FORMAT
dateFormatter.timeZone = TimeZone(identifier: "UTC")

print(dateFormatter.date(from: isoDate))

它返回 nil,我想我没有正确指定日期格式,任何帮助将不胜感激

Unicode LDML date format 不支持 GMT+0000(但它支持 GMT+00:00),也不支持 (Coordinated Universal Time)

这样的字符串

一个可能的解决方案是使用正则表达式

从字符串中删除 non-standard 部分
let dateFormat = "E MMM dd yyyy HH:mm:ss Z"

let isoDate = "Wed Oct 14 2020 05:31:08 GMT+0000 (Coordinated Universal Time)"

let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = dateFormat
dateFormatter.timeZone = TimeZone(identifier: "UTC")
let trimmedIsoDate = isoDate.replacingOccurrences(of: "GMT([+-]\d{4})\s\([^)]+\)", with: "", options: .regularExpression)
print(dateFormatter.date(from: trimmedIsoDate))

该模式捕获 +0000 部分并将从 GMT 到结尾的所有内容替换为捕获的时区