我正试图使用以下代码将"2020年10月14日星期三05:31:08 GMT+0000(协调世界时("此日期字符串转换为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))
它返回零,我想我没有正确指定日期格式,任何帮助都将不胜感激
Unicode LDML日期格式不支持GMT+0000
(但它支持GMT+00:00
(,也不支持类似(Coordinated Universal Time)
的字符串
一个可能的解决方案是使用正则表达式从字符串中删除非标准部分
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: "$1", options: .regularExpression)
print(dateFormatter.date(from: trimmedIsoDate))
该模式捕获+0000
部分,并将从GMT到结束的所有内容替换为捕获的时区