2012-10-20 81 views
0

我有下面這段代碼..轉換的NSString來NSDate的失敗

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"MM/dd/YYYY HH:mm"]; 
NSString *dateString = @"10/27/2012 18:00"; 
NSDate *parsedDate = [dateFormatter dateFromString:dateString] ; 
NSLog(@"Parsed Date.. %@",[parsedDate description]); 

我收到的NSLog語句Parsed Date.. 2011-12-25 00:00:00 +0000。我希望有任何幫助解決這個問題。我只是想將該NSString轉換爲其NSDate等價物。嘗試使用NSTimeZone,但沒有效果。我在這裏錯過了什麼?

回答

3

您需要使用小寫年指示的yyyy代替YYYY:如果你想獲得你需要設置NSDateFormatter的時區的時區右

[dateFormatter setDateFormat:@"MM/dd/yyyy HH:mm"]; 

。默認情況下,它使用設備的時區。在格林威治標準時間使用以下內容。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
dateFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0]; 
[dateFormatter setDateFormat:@"MM/dd/yyyy HH:mm"]; 
NSString *dateString = @"10/27/2012 18:00"; 
NSDate *parsedDate = [dateFormatter dateFromString:dateString] ; 
NSLog(@"Parsed Date.. %@",[parsedDate description]); 
+0

您應該接受此答案,他解決了您的問題。查看時區格式設置的文檔。 –

+0

輝煌。我需要通過這些文件肯定..非常感謝答案.. – Sharath

0

您正在使用不正確的格式字符串。請參閱the documentation。基本上,資本YYYY是「年份周」。嘗試使用小寫字母yyyy代替,即

[dateFormatter setDateFormat:@"MM/dd/yyyy HH:mm"]; 
+0

不錯。這適用於日期就好了,但是我得到**解析日期。2012-10-27 12:30:00 + 0000 **我應該使用時區格式嗎?或者我可以沒有這樣做呢? – Sharath