我知道这个问题已在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
。
一旦我得到一个日期对象,我会改变它的格式并显示一个不同的字符串,但我没有得到一个日期对象本身。
这可能是什么问题?
答案 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)
检索到的格式错误,请验证要转换的格式