首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSDateFormatter无法返回设置了12小时时钟的英国区域的日期时间

NSDateFormatter无法返回设置了12小时时钟的英国区域的日期时间
EN

Stack Overflow用户
提问于 2015-12-09 02:27:11
回答 1查看 711关注 0票数 6

此代码适用于我可以确定的所有区域/区域设置组合,除非我将手机设置为12小时时钟设置的英国区域。有人能告诉我为什么吗?

这适用于每个地区,包括设置了12小时时钟的英国:

代码语言:javascript
复制
NSDateFormatter *theDateFormatter = [[NSDateFormatter alloc] init];
theDateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSSSSSZ";

NSString *theLastFetchDateString = @"2015-11-13T01:47:52.4630000Z";
NSDate *theLastFetchDate = [theDateFormatter dateFromString:theLastFetchDateString];

这在除英国以外的所有地区都有效,并设置了12小时时钟:

代码语言:javascript
复制
NSDateFormatter *theDateFormatter = [[NSDateFormatter alloc] init];
theDateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSSSSSZ";

NSString *theLastFetchDateString = @"2015-11-13T18:14:44.1230000Z";
NSDate *theLastFetchDate = [theDateFormatter dateFromString:theLastFetchDateString];

我看到的主要区别是第二个日期是以24小时格式存储的,而解析设备是以12小时格式存储的,但是格式化程序HH应该能够处理它,对吧?

或者“下午”。其中美国12小时时钟将它们格式化为“AM”或“PM”。

EN

回答 1

Stack Overflow用户

发布于 2015-12-09 02:55:29

您正在分析RFC 3339/ISO 8601日期。因此,您应该将格式化程序的locale设置为en_US_POSIX

代码语言:javascript
复制
theDateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];

参见Apple Technical Q&A 1480

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34163266

复制
相关文章

相似问题

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