NSDateFormatter - 模拟器与硬件上的星期几不同

时间:2011-03-31 06:28:35

标签: iphone objective-c nsdateformatter

我正在尝试在我的应用中确定一周中的当前日期。要做到这一点,我有:

NSDateFormatter* dayDateFormatter = [[NSDateFormatter alloc] init];
[dayDateFormatter setDateFormat:@"e"];
int todayDayNum = [[dayDateFormatter stringFromDate:[NSDate date]] intValue];
[dayDateFormatter release];
NSLog(@"%d", todayDayNum);

今天是我的星期四,在我的iPhone上我得到的值为4。但是,在模拟器上我得到5

我做错了吗?我已经尝试了ce作为格式字符串。我还在模拟器和设备上仔细检查了日期/时间是否正确(和相同)。

编辑:我已将我的代码更改为以下内容,现在似乎一致地工作(我的设备和模拟器都得到5。我猜这是因为我的设备正在使用其他日历?

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *weekdayComponents = [gregorian components:(NSWeekdayCalendarUnit) fromDate:[NSDate date]];
NSInteger todayDayNum = [weekdayComponents weekday];
NSLog(@"%d", todayDayNum);

1 个答案:

答案 0 :(得分:0)

尝试玩 [gregorian setFirstWeekday:1]; //星期日== 1,星期六== 7等

或locale - [gregorian setLocale:[NSLocale currentLocale]]; 因为它也影响了