1

我知道这个问题已经在 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. 一旦我得到一个日期对象,我会改变它的格式并显示一个不同的字符串,但我没有得到一个日期对象本身。

这里可能是什么问题?

4

3 回答 3

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

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

于 2012-08-02T12:55:56.587 回答
1

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

SS'Z'

代替

SSZ
于 2012-08-02T12:39:16.400 回答
0

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

于 2012-08-02T13:07:34.233 回答