iOS 12 stringFromDate 方法 returns 不正确的值

iOS 12 stringFromDate method returns incorrect value

在 iOS 12 中,我注意到 [NSDateFormatter stringFromDate] 方法 returns 在模拟器上的值不正确 iPad,但在物理 iPad.

示例代码:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"c"];

NSDate *currentDate = [NSDate date];
// Returns correct value on both physical and simulator iPads (eg. Fri Oct 19 15:39:53 2018)

NSString *currentDateAsString = [dateFormat stringFromDate:currentDate];
// Physical iPad: 5 (correct)
// Simulator iPad: 6 (incorrect)

两个 iPad 具有相同的 date/time 设置(例如,相同的时区)。这个错误的原因是什么?

在您的真实 iPad 和模拟器 iPad 上检查 the first weekday 以查看它们是否匹配:

NSCalendar.current.firstWeekday

并将该值纳入您从日期格式化程序中获取的工作日的计算中。

一周的第一天 iOS 取决于区域设置。在真实和模拟器 iPad 上仔细检查设置 -> 常规 -> 语言和区域 -> 区域中的设置。此外,也可能值得在系统偏好设置 -> 语言和地区 -> 一周的第一天中检查 Mac 上的第一天。