为什么我的日期解析器在Swift中不起作用?

问题描述:

我有一个包含日期字段的JSON:在我的应用程序为什么我的日期解析器在Swift中不起作用?

"created_at":"2016-03-06T16:39:29.786Z" 

我在做这样的:

let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-ddThh:mm:ss.SSSZ" 
let created_at = json["created_at"].string 
let crd = dateFormatter.dateFromString(created_at!) 
print(crd) //prints nil 

为什么会出现nil呢?

您需要引用文字文本,并且您在小时内使用了错误的格式说明符。

必须引用T

hh适用于12小时格式,但您有24小时格式,即HH

所以,你想:

dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 
+0

好了,但现在当我在做:'打印(created_at); print(crd)'我得到了两个不同的值:'可选的(“2016-03-07T21:19:26.277Z”)''和'可选的(2016-03-07 21:19:26 +0000)'。这可能是什么原因? – user3766930

+1

第一个是原始字符串,第二个是'NSDate'的日志输出。两者都代表相同的日期。你为什么期望两个输出是相同的?你所看到的是正确的。 – rmaddy

+0

值得在标准QA1480'en_US_POSIX'建议下夹紧,以便您的手机不会将24小时格式转换为12小时? (虽然我已经投票确定) – Tommy