2011-09-24 158 views
0

我從webservice獲取字符串「2011-09-24T00:30:00.000-07:00」。 我不知道這是什麼格式,並希望在目標c中的日期對象轉換。將字符串轉換爲NSDate對象

因此,任何知道如何將此字符串轉換爲日期。

非常感謝您

+0

可能的重複[是否有一種簡單的方法將ISO8601時間戳轉換爲格式化的NSDate?](http://stackoverflow.com/questions/2201216/is-there-a-simple-way-of-converting- an-iso8601-timestamp-to-a-formatted-nsdate) –

回答

0

問題已經被問了幾次,你就需要使用nsdateformatter:

NSDate from NSString

也是谷歌:NSDate的距離的NSString

4

有從這種格式獲得日期/時間的小問題,即需要刪除的時區中的':',Apple不處理這種情況,也不是適當的UTS格式。下面是一個例子:

NSString *dateString = @"2011-09-24T00:30:00.000-07:00"; 
dateString = [dateString stringByReplacingOccurrencesOfString:@":" withString:@"" options:0 range:NSMakeRange(dateString.length-3, 1)]; 
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"]; 
NSDate *date = [formatter dateFromString:dateString]; 
NSLog(@"date: %@", date); 

的NSLog輸出:date: 2011-09-24 07:30:00 +0000

作爲測試顯示剛創建的日期:

NSString *testDateString = [formatter stringFromDate:date]; 
NSLog(@"date: %@", testDateString); 

的NSLog輸出:date: 2011-09-24T03:30:00.100-0400

注意,時間和時區域已被NSLog轉換爲我的本地時區,考慮到這兩個更改的日期/時間與原始相同。

+0

嗨,感謝您的回覆此代碼幫助我創建日期對象,但問題是它顯示我錯誤的時間,因爲我的時區可能不同,你能夠創建激勵時間,就像我給出的字符串一樣。如果是,那麼你能告訴我該怎麼做...... –

0

通常由日期/時間表示Web服務的字符串格式是RFC 3339

它不能被輕易地轉化成和從的NSDate,因爲它可以包括各種信息,不通過的NSDate只是所能表述(如時間偏移從UTC開始,日期沒有指定時間。)

有些類將RFC 3339字符串映射到本地可可類型,如this。您可以通過簡單的轉換來獲得快捷方式,但對於健壯的代碼,可以使用專門編寫的類來處理表示。