2011-04-08 158 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

相關問題