iOS 12 stringFromDate方法返回不正确的值

时间:2018-10-22 23:55:20

标签: ios date nsdate nsdateformatter ios12

在iOS 12中,我注意到[NSDateFormatter stringFromDate]方法在模拟器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都具有相同的日期/时间设置(例如,相同的时区)。此错误的原因是什么?

1 个答案:

答案 0 :(得分:1)

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

NSCalendar.current.firstWeekday

,并将该值用于从日期格式化程序获取的工作日的计算中。

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