从字符串iOS swift 5转换日期



我正试图使用以下代码将"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到结束的所有内容替换为捕获的时区

最新更新