dateFromString返回nil

时间:2012-08-02 12:32:45

标签: ios nsdate nsdateformatter

我知道这个问题已在SO上多次讨论过,但结果都没有解决我的问题。 这是代码片段,

NSDateFormatter* df = [[NSDateFormatter alloc]init];
[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSZ"];         
NSDate* date = [df dateFromString:dateTaken]; 
/* dateTaken gets its value
 from the server as 2006-01-23T20:50:27Z */

我尝试添加断点并进行检查,dateFromString正在返回nil。 一旦我得到一个日期对象,我会改变它的格式并显示一个不同的字符串,但我没有得到一个日期对象本身。

这可能是什么问题?

3 个答案:

答案 0 :(得分:1)

格式字符串的最后一部分应为

SS'Z'

而不是

SSZ

答案 1 :(得分:1)

似乎你的格式化程序错了。它应该是:
yyyy-MM-dd'T'HH:mm:ss'Z'
2006-01-23T20:50:27Z

将它与您拥有的字符串匹配,并且没有SSZ组件。

编辑:
在回顾了另一个答案之后,我很紧张我的错误,所以我尝试了以下几点:
NSString* dateTaken = @"2006-01-23T20:50:27Z";
NSDateFormatter* df = [[NSDateFormatter alloc]init];
[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SS'Z'"];
NSDate* date = [df dateFromString:dateTaken]; //nil
[df setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
date = [df dateFromString:dateTaken]; // Not nil

似乎使用您提供的字符串,您需要我刚提供的第二种格式。

答案 2 :(得分:0)

检索到的格式错误,请验证要转换的格式