当前位置:  开发笔记 > 编程语言 > 正文

NSDateFormatter无法在12小时制设置时返回英国地区的日期时间

如何解决《NSDateFormatter无法在12小时制设置时返回英国地区的日期时间》经验,为你挑选了1个好方法。

此代码适用于我可以确定的每个区域/区域设置组合,如果我将手机设置为12小时制设置的英国区域.谁能告诉我为什么?

这适用于包括英国在内的每个地区设置12小时制:

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小时制:

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];

在第二种情况下,LastFetchDate总是为零.

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

另一个奇怪的事情,它可能只是一个展示的东西,英国12小时时钟格式时间与'上午'或'下午'美国12小时时钟格式为'上午'或'下午'.



1> Rob..:

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

theDateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];

请参阅Apple Technical Q&A 1480.

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有