在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都具有相同的日期/时间设置(例如,相同的时区)。此错误的原因是什么?
答案 0 :(得分:1)
在真实iPad和模拟器iPad上检查the first weekday,看它们是否匹配:
NSCalendar.current.firstWeekday
,并将该值用于从日期格式化程序获取的工作日的计算中。
iOS上一周的第一天取决于“区域”设置。在真实iPad和模拟器iPad上,仔细检查设置->常规->语言和区域->区域中的设置。另外,可能还需要在Mac的“系统偏好设置”->“语言和地区”->“一周的第一天”中查看一周的第一天。