2011-12-14 23 views
2

我試圖將此字符串「2011-11-23T17:59:00Z」轉換爲NSDate。在iOS中解析ISO8601時間的問題

我見過很多人有這個問題,但每個人都有一個稍微不同的格式。我一直無法破解解決方案。

我已經試過這樣的代碼:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
dateFormat.timeStyle = NSDateFormatterFullStyle; 
[dateFormat setDateFormat: @"yyyy-MM-dd'T'HH:mm:ss'Z'"]; 
NSString* date = ""2011-11-23T17:59:00Z""; 
NSString *dateString = [dateFormat stringFromDate: date]; 

dateString總是回來NULL

回答

3

NSDateFormatter stringFromDate需要一個NSDate對象,你傳遞一個字符串。 http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/Reference/Reference.html

嘗試NSDateFormatter dateFromString。

如果使用dateFromString:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat: @"yyyy-MM-dd'T'HH:mm:ssZ"]; 
NSString* dateStr = @"2011-11-23T17:59:00Z"; 
NSDate *date = [dateFormat dateFromString:dateStr]; 

NSLog(@"date: %@", date); 

輸出:

2011-12-14 00:34:57.587 Craplet[440:707] date: 2011-11-23 22:59:00 +0000 
+0

這個答案是不正確。格式字符串不應該引用`Z`。 – rmaddy 2014-09-12 21:03:45