我使用以下方法获取传递日期的工作日:
+ (NSInteger)weekdayFromDate:(NSDate *)date {
NSDateComponents *dateComponents = [[NSCalendar currentCalendar] components:NSWeekdayCalendarUnit fromDate:date];
return dateComponents.weekday % 7;
}
此方法在不同设备上为同一日期返回两个不同的数字。例如,我使用此方法从NSDate
获取NSString
:
dateFormatter = [NSDateFormatter new];
dateFormatter.dateFormat = @"MM/dd/yyyy";
dateFormatter.timeZone = [NSTimeZone timeZoneWithName:@"America/New_York"];
NSDate *date = [dateFormatter dateFromString:@"03/11/2014"];
对于我的所有测试设备,返回的工作日是2(应该是星期一),但是在运行相同代码的其他设备上,返回的日期是3(应该是星期二:正确的日期)。为什么会出现这种变化?有没有办法解决这个问题?