iOS 10 错误? NSDate 小时描述与日本地区和 24 小时休假

标签 ios objective-c nsdate nsdateformatter ios10

这似乎是 iOS 10 的错误。在 iOS 8 和 9 中是可以的。

[NSDate date].description 的小时描述错误。它附加了 24 小时描述和 12 小时描述。我没有使用 NSDateFormatter。只是默认设置。

在真实的 iOS 10 设备上,在“设置”中:

  • 在“设置”>“通用”>“语言与区域”>“区域格式”>“区域”中将区域设置为日本
  • 在“设置”>“通用”>“日期和时间”>“24 小时制”中设置 24 小时制关闭

然后:

NSLog(@"Date is %@", [NSDate date].description);

实际日志输出:

Date is 2016-11-14 44:14:57 AM +0000

预期输出:

Date is 2016-11-14 4:14:57 AM +0000

编辑(添加另一个示例):

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd hh:mm:ss a";
NSString *dateString = @"1985-04-12 7:20:50 PM";
NSDate *date = [dateFormatter dateFromString:dateString];
NSLog(@"Date is %@", date.description);

实际输出:

Date is 1985-04-12 1010:20:50 AM +0000

预期输出

Date is 1985-04-12 10:20:50 AM +0000

如果我将小时格式更改为 24 小时格式 (HH):

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss a";
NSString *dateString = @"1985-04-12 7:20:50 PM";
NSDate *date = [dateFormatter dateFromString:dateString];
NSLog(@"Date is %@", date.description);

实际输出:

Date is (null)

预期输出:

Date is 1985-04-12 10:20:50 AM +0000

最佳答案

我们也遇到了 iOS 10.x 的类似问题,并使用

修复了它

NSLocale *POSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; dateFormatter.locale 应该等于(POSIXLocale);

关于iOS 10 错误? NSDate 小时描述与日本地区和 24 小时休假,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40581850/

相关文章:

ios - 如何以编程方式备份​​ Realm 文件?

ios - 为什么我无法在 CloudKit 中访问 CKRecord 的createdAt 字段?

ios - 插页式广告后更改场景 (SpriteKit)

ios - tableview 连接到数据源和委托(delegate) - 如何

ios - 设置 UISlider 更改的时间

ios - 从 presentViewController 推送到 UIViewController

objective-c - 具有条件值的 Objective C 中的常量

ios - 在 NativeScript 5.4 插件中使用静态 iOS 库

ios - 获取所需的日期对象

swift - NSDate() 或 Date() 显示错误的时间