iOS 10的bug?与日本地区和24小时休息时间的NSDate小时描述

时间:2016-11-14 04:23:23

标签: 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

1 个答案:

答案 0 :(得分:1)

我们也面临iOS 10.x的类似问题并使用

修复它

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