首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么NSDateFormatter不能从ISO8601格式解析日期

为什么NSDateFormatter不能从ISO8601格式解析日期
EN

Stack Overflow用户
提问于 2011-10-28 12:05:06
回答 1查看 18.1K关注 0票数 17

可能重复:

Converting an ISO 8601 timestamp into an NSDate: How does one deal with the UTC time offset?

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

但是经过我的研究,NSDateFormatter不能支持它,除非我将日期改为2008-12-29T00:27:42-0800

这是我用来解析ISO8601日期的代码,但它不起作用

代码语言:javascript
复制
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"]);

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-28 12:39:15

问题出在最后的时区。

您需要将其设置为: GMT-0X:00或as -0X00,小时和分钟之间不能分开。

以下两种组合有效:

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

代码语言:javascript
复制
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

代码语言:javascript
复制
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"]);
票数 47
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7925038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档