为什么NSDateFormatter不能从ISO 8601格式parsingdate

可能重复:
将ISO 8601时间戳转换为NSDate:如何处理UTC时间偏移?

我使用rails作为后端,默认date输出是2008-12-29T00:27:42-08:00

但是,在我的研究NSDateFormatter不能支持它,除了我改变date2008-12-29T00:27:42-0800

这里是我用来parsingISO 8601date的代码,但是这不起作用

NSDateFormatter* dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"]; NSLog(@"%@", [dateFormatter dateFromString:@"2008-12-29T00:27:42-08:00"]); 

有任何想法吗?

问题在于最后的时区。

您需要将它作为:GMT-0X:00或-0X00,小时和分钟之间没有分开。

以下两个组合工作:

组合1 – 使用GMT格式(GMT-0X:00)和ZZZZ

 NSDateFormatter* dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZZ"]; NSLog(@"DATE FORMAT:%@", [dateFormatter dateFromString:@"2008-12-29T00:27:42GMT-08:00"]); 

组合2 – 使用RFC 822格式(-0X00)和ZZZ

 dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; [dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"]; NSLog(@"DATE FORMAT:%@", [dateFormatter dateFromString:@"2008-12-29T00:27:42-0800"]);