Swift:NSDateFormatter dateFromString在设备上返回零

我发现了一些可以在Obj-c中解决我的问题,但我无法翻译代码,所以我要求一个Swift解决scheme。

我parsing从JSON文件中的一些数据,我得到一个问题检索date; 这里是代码:

println(data) // "Fri, 16 Jan 2015 11:49:00 +0100" var dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "EEE, dd LLL yyyy HH:mm:ss ZZZ" let formattedDate = dateFormatter.dateFromString(data) println(formattedDate) // returns 'Optional(2015-01-16 11:49:00 +0100)' if running on an iOs Simulator // returns 'nil' if runnig on an iPhone 

就像我在代码注释中写的那样,如果我在iOs模拟器或操场上运行date,我会正确地获得date的可选types,但如果它在iPhone上运行,则会得到零。

谁能帮忙? 谢谢你的build议..

PS对不起,我的英语不好

对于那些到这里来的人,不要读最初的post的评论 ;)

正如@rintaro指出的那样 – 我的问题也是如此 – 当你使用固定格式的date时,你必须添加一个语言环境

如果您使用的是固定格式date,则应首先将date格式程序的语言环境设置为适合您固定格式的内容。 在大多数情况下,最好的语言环境是en_US_POSIX

https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/DataFormatting/Articles/dfDateFormatting10_4.html#//apple_ref/doc/uid/TP40002369-SW7

所以在Swift 3中你将不得不添加

 dateFormatter.locale = Locale(identifier: "en_US_POSIX")