繁体   English   中英

iOS不会打扰引起此错误的错误吗?

[英]Is the iOS Do Not Disturb Bug Causing this Bug?

我试图找出最近的“请勿打扰”错误( 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日)才能看到预期的结果,还是我错过了完全不同的东西?

问题在于如何计算减法。 我可能完全误解了Apple提供的示例,或者还不够清楚。 计算减法的解决方案如下:

weekday = ( weekdays.weekday == 1 ) ? 8 : weekdays.weekday;
toSubtract = ( 2 - weekday );

[subtract setDay:toSubtract];

运行各种测试产生了正确的“星期一”。 最后,这与影响“请勿打扰”的日期错误无关。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM