Swift:NSDateFormatter dateFromString在设备上返回nil

时间:2015-02-13 09:11:47

标签: ios swift nsdateformatter

我找到了可以解决我在Obj-c中的问题的东西,但是我无法翻译代码,所以我要求提供Swift解决方案。

我正在解析JSON文件中的一些数据,并且在检索日期时出现问题;这是代码:

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模拟器上或在操场上运行它,我会正确选择日期的可选类型,但如果它在iPhone上运行,我会得到nil。

有人可以帮忙吗?谢谢你的建议..

P.S。抱歉我的英文不好

1 个答案:

答案 0 :(得分:4)

对于其他人来到这里并且没有阅读初始帖子的评论;)

正如@rintaro所指出 - 以及我的问题是什么 - 当您使用固定格式的日期时,您必须添加区域设置

  

如果您正在使用固定格式的日期,则应首先设置   日期格式化程序的区域设置适合您的固定格式   格式。在大多数情况下,要选择的最佳语言环境是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")