从字符串 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 到结尾的所有内容替换为捕获的时区
我正在尝试使用以下代码将 '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 到结尾的所有内容替换为捕获的时区