如何在Swift中解析带有缩写时区的日期字符串

时间:2017-03-06 00:45:30

标签: swift datetime nsdateformatter dateformatter

我正在使用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")设置区域设置,但这没有任何区别,时区标识符为zzzZZZ以及所有可能的变体。
我有什么东西可以忽略或者能够迅速理解字符串中缩写的时区吗?

0 个答案:

没有答案