2011-12-30 7 views
-4

я получил строку даты в отношении этого формата:Как разобрать ISO8601 дату

2011-12-29T09:09:06-0500 

Как я могу преобразовать это в объект даты?

+4

вы искали на SO или Google? – Sarah

+1

http://stackoverflow.com/questions/4999396/how-to-parse-a-date-string-into-an-nsdate-object-in-ios, http://stackoverflow.com/questions/6194998/whats -the-right-way-to-parse-an-iso8601-date-in-cocoa, http://stackoverflow.com/questions/7925038/why-nsdateformatter-can-not-parse-date-from-iso-8601 -формат, http://stackoverflow.com/questions/5559912/date-time-parsing-in-ios –

ответ

1
NSString *date = [[NSDate date] description]; 

[NSDateFormatter setDefaultFormatterBehavior:NSDateFormatterBehavior10_4]; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'"]; 

NSDate *dateFromString = [[NSDate alloc] init]; 
dateFromString = [dateFormatter dateFromString:<NSString containing date>]; 
3

Попробуйте это решение

NSString *dateString = @"2011-12-29T09:09:06-0500"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"]; 

NSDate *dateFromString = [dateFormatter dateFromString:dateString];  
[dateFormatter release]; 
NSLog(@" dateFromString %@",dateFromString); 
+1

Забирает ли это TZ или ударяет его в Зулу или ...? (Я ничего не использую iX.) –

+0

Это не удается для множества строк даты ISO8601, например. "2013-11-27T11: 28: 10.201-08: 00". http://en.wikipedia.org/wiki/ISO_8601 Есть ли что-нибудь более всеобъемлющее? – Adrian

+0

быстрые версии: 'пусть дата = "2008-12-29T00: 27: 42-0800" пусть форматировщик = NSDateFormatter() formatter.setLocalizedDateFormatFromTemplate ("YYYY-MM-dd'T'HH: мм: ssZZZ") let final = formatter.dateFromString (date) ' – fatihyildizhan

Смежные вопросы