2012-04-10 3 views
0

이번 주 월요일의 날짜를 검색하는 기능에 문제가 있습니다.마지막 월요일의 날짜를 계산하는 동안 NSDate를 끕니다.

는 때로는 하루입니다 :

+(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]; 
} 
+0

왜'평일 == 1'입니까? 일요일은 1이고 월요일은 2입니다. – trojanfoe

+0

일요일에 월요일보다는 0에서 시작하는 것이 좋습니다. – Ayrad

답변

2

애플은 code demonstrating how to do almost exactly this있다. 그들은 월요일 대신에 일주일을 목표로하지만, 조정하기 위해 적절한 장소에 1을 더할 수 있습니다.

당신은 확실히 60*60*24과 같은 일을하고 싶지 않고 조정할 시간을 초 단위로 계산하고 싶지 않습니다. 예를 들어 일광 절약 시간이 변경되어 일수가 24 시간보다 많거나 짧을 수 있습니다.

관련 문제