Swift 无法将字符串日期解析为日期对象

Swift unable to parse string date to Date object

我有以下日期格式:

2016-08-26T05:16:50.200Z

我正在尝试将类似的日期格式字符串解析为 Swift 3.0 中的 Date 个对象。

这是我的努力:

let formatter = DateFormatter()
formatter.dateFormat = "yyyy-mm-dd EEEEE HH:mm:ss Z"
formatter.locale = Locale(identifier: "us")

var date = formatter.date(from: date_str)!

其中date_str就是上面提到的格式。 不幸的是,swift 无法识别格式并且 returns nil。

注意:我不想更改字符串以匹配格式化程序,而是要使格式化程序适应字符串的格式。字符串是外部来源,所以我无法更改字符串的格式,但坚持使用它并创建一个可以识别字符串的日期模式的格式化程序。

有什么关于我的格式错误的想法吗?

你在这里犯了错误,这里 T 不是星期的详细信息,T 只是时间部分开始位置的标记。

A single point in time can be represented by concatenating a complete date expression, the letter T as a delimiter, and a valid time expression. For example "2016-10-05T14:30".

所以现在只需将您的 dateFomat 更改为 yyyy-MM-dd'T'HH:mm:ss.SSSZ,您就会得到您想要的正确日期。

let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
formatter.locale = Locale(identifier: "us")
var date = formatter.date(from: date_str)!
print(date)

输出: