为什么NSDateFormatter返回nil?

时间:2011-04-08 18:36:21

标签: objective-c nsdateformatter

更确切地说,这对我不起作用:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"YYYY-MM-ddTHH:mm:ssZ"];
NSDate *prevday = [formatter dateFromString:@"2011-04-07T22:00:48Z"];    

prevday正在返回NIL。

2 个答案:

答案 0 :(得分:16)

您需要在字符串中插入刻度:

@"YYYY'-'MM'-'dd'T'HH':'mm':'ss'Z'"

答案 1 :(得分:0)

根据这份文件;

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/DataFormatting/Articles/dfDateFormatting10_4.html%23//apple_ref/doc/uid/TP40002369-SW1

日期格式化程序使用以下版本的标准;

http://unicode.org/reports/tr35/tr35-10.html#Date_Format_Patterns

所以你要使用日期格式'yyyy-MM-ddTHH:mm:ss'我不确定Z,那应该是时区吗?格式字符串中的Z将为您提供3个字母的时区名称。

根据您的编辑进行编辑:

[formatter setDateFormat:@"YYYY-MM-ddTHH:mm:ssZ"];

为什么它会返回零。

'Z'期望时区属于3个字符的时区...

删除Z或使用引号字符将其转义。阅读上面的tr35 doc以获取更多信息。