2011-12-30 109 views
-4

我得到关于这种格式的日期字符串:如何解析ISO8601日期

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

我如何转换到这个约会对象?

+4

你搜索的SO或谷歌? – Sarah 2011-12-30 06:09:10

+1

http://stackoverflow.com/questions/4999396/how-to-parse-a-date-string-into-an-nsdate-object-in-ios,http://stackoverflow.com/questions/6194998/whats - 正确的方式来解析 - 一个iso8601年在可可,http://stackoverflow.com/questions/7925038/why-nsdateformatter-can-not-parse-date-from-iso-8601格式,http://stackoverflow.com/questions/5559912/date-time-parsing-in-ios – 2011-12-30 06:30:09

回答

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。) – 2011-12-30 06:36:25

+0

这在大量ISO8601日期字符串上失败,例如, “2013-11-27T11:28:10.201-08:00”。 http://en.wikipedia.org/wiki/ISO_8601 有什么更全面的? – Adrian 2013-12-18 18:22:31

+0

迅速版本: '让日期= “2008-12-29T00:27:42-0800” 设格式化= NSDateFormatter() formatter.setLocalizedDateFormatFromTemplate( “YYYY-MM-dd'T'HH:MM:ssZZZ” ) let final = formatter.dateFromString(date)' – fatihyildizhan 2015-06-11 14:30:38