0

我的函数有问题,该函数应该检索本周的星期一日期。

有时是休息日:

+(NSDate *) lastMondayBeforeDate:(NSDate*)timeStamp {
    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents *comps = 
    [gregorian components:NSWeekdayCalendarUnit fromDate:timeStamp];
    NSInteger weekday = [comps weekday];
    weekday = weekday==1 ? 6 : weekday-2; 
    NSTimeInterval secondsSinceMondayMidnight =  
    (NSUInteger) [timeStamp timeIntervalSince1970] % 60*60*24 + 
    weekday * 60*60*24;

    NSLog(@"MONDAY's DATE-----------%@", [timeStamp dateByAddingTimeInterval:-secondsSinceMondayMidnight]);
    return [timeStamp dateByAddingTimeInterval:-secondsSinceMondayMidnight];
}
4

1 回答 1

2

苹果有代码演示如何做到这一点。他们的目标是一周中的星期日而不是星期一,但您只需在适当的位置添加 1 即可进行调整。

你绝对不想做一些事情,比如60*60*24计算秒数来调整。例如,由于夏令时的变化,天数可能多于或少于 24 小时。

于 2012-04-11T06:29:32.333 回答