我正在使用Swift 3并使用格式为Sat, 04 Mar 2017 03:40 AM GMT
的YQL端点的日期字符串。这适用于几个时区(GMT,EST ...),但是当使用例如JST或CET时,它无法解析 - 显然是因为它们是缩写的时区名称。
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEE, dd MMM yyyy hh:mm a Z"
var origin = dateFormatter.date(from: "Sat, 04 Mar 2017 03:40 AM JST") // nil
origin = dateFormatter.date(from: "Sat, 04 Mar 2017 03:40 AM GMT") // works!
一个简单的解决方案是访问日期组件并使用components.timeZone = TimeZone(abbreviation: "JST")
分配时区并创建一个新的日期对象,但它只会让整个事情变得太丑陋。我还尝试使用dateFormatter.locale = Locale(identifier: "en_US_POSIX")
设置区域设置,但这没有任何区别,时区标识符为zzz
或ZZZ
以及所有可能的变体。
我有什么东西可以忽略或者能够迅速理解字符串中缩写的时区吗?