2011-04-08 156 views
2

更精确地说,这是不是为我工作:为什么NSDateFormatter返回nil?

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

prevday将返回NIL。

+0

你有没有试过? – 2011-04-08 18:41:52

回答

16

你需要插入蜱在字符串中

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

nm ..它的作品...谢谢 – Prabh 2011-04-08 19:05:49

+0

太棒了!谢谢 – DZenBot 2013-01-11 16:39:25

+0

太多的蜱虫。它们仅用于字母。标点符号像 - 和:不需要它们 – jpgoulet 2015-02-17 00:51:27

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"]; 

就是为什么它返回nil。

的“Z”预计的时间段是在3个字符时区的事情...

降Z或用引号字符转义。阅读上面的tr35文档以获取更多信息。

+1

你只需要在T和Z上添加刻度,所以它会是:[formatter setDateFormat:@“YYYY-MM-dd'T'HH:mm:ssZ''”]; – user1447414 2014-04-23 10:18:09

相关问题