Ios 奇怪的组件行为

Ios 奇怪的组件行为,ios,nsdatecomponents,Ios,Nsdatecomponents,我使用以下方法获取传入日期的工作日: + (NSInteger)weekdayFromDate:(NSDate *)date { NSDateComponents *dateComponents = [[NSCalendar currentCalendar] components:NSWeekdayCalendarUnit fromDate:date]; return dateComponents.weekday % 7; } 此方法在不同的设备上为同一日期返回两个不同的数字。

我使用以下方法获取传入日期的工作日:

+ (NSInteger)weekdayFromDate:(NSDate *)date {
    NSDateComponents *dateComponents = [[NSCalendar currentCalendar] components:NSWeekdayCalendarUnit fromDate:date];
    return dateComponents.weekday % 7;
}
此方法在不同的设备上为同一日期返回两个不同的数字。例如,我使用它从
NSString
获取
NSDate

dateFormatter = [NSDateFormatter new];
dateFormatter.dateFormat = @"MM/dd/yyyy";
dateFormatter.timeZone = [NSTimeZone timeZoneWithName:@"America/New_York"];
NSDate *date = [dateFormatter dateFromString:@"03/11/2014"];

对于我的所有测试设备,返回的工作日是2(应该是星期一),但是对于运行相同代码的其他设备,返回的日期是3(应该是星期二:正确的日期)。为什么会发生这种变化?有没有办法解决此问题?

测试设备所在的时区?您可能希望在当前设备的时区内完成所有操作。注释掉时区的设置,看看结果是什么。似乎我的时区是不同的。@rmaddy您有什么建议可以让它在所有时区工作?正如我所说的,注释掉设置时区的行。只需使用默认值。