我试图找出最近的“请勿打扰”错误(Ars Technica 链接)是否影响了我的代码。我正在尝试获取上周一午夜的日期和时间戳。由于我是在星期一写这篇文章,我希望得到今天的日期(2013 年 1 月 7 日),但我是 2013 年 1 月 4 日。
我正在关注Apple 发布的指南,但我正在尝试修改它以找到前一个星期一,而不是星期天。
+(NSTimeInterval)StartOfWeekMonday {
NSTimeInterval finalTime = -1;
NSInteger weekday;
NSDate *monday = 0;
NSCalendar *greg = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *weekdays = [greg components:NSWeekdayCalendarUnit fromDate:[NSDate date]];
NSDateComponents *subtract = [[NSDateComponents alloc] init];
NSDateComponents *final = 0;
weekday = ( weekdays.weekday == 1 ) ? 6 : weekdays.weekday;
[subtract setDay:(0 - weekday - 1)];
monday = [greg dateByAddingComponents:subtract toDate:[NSDate date] options:0];
final = [greg components:(NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit) fromDate:monday];
monday = [greg dateFromComponents:final];
#ifdef DEBUG
NSLog( @"%s - %d -> Weekday: %d", __FILE__, __LINE__, weekday );
NSLog( @"%s - %d -> Monday: %@", __FILE__, __LINE__, [monday descriptionWithLocale:[NSLocale currentLocale]] );
#endif
finalTime = [monday timeIntervalSince1970];
return finalTime;
}
我的日志放在下面,工作日是正确的(我是在星期一写的),但日期显然是错误的,应该是Monday: Monday, January 7, 2013, 12:00 AM
2013-01-07 15:07:33.792 MY-APP[5524:14c03] Weekday: 2
2013-01-07 15:07:36.757 MY-APP[5524:14c03] Monday: Friday, January 4, 2013, 12:00:00 AM Eastern Standard Time
现在正在模拟器中,但我所有其他日期计算都给出了预期值。
我是否可能受到最近的“请勿打扰”错误的影响,并且必须等待明天(2013 年 1 月 8 日)才能看到预期的结果,还是我错过了一些完全不同的东西?