2012-08-15 4 views
0

3 개월 현재 날짜는 어떻게받을 수 있습니까? 지난 3 개월 동안 모든 파일을 가져 오기 위해 데이터베이스 쿼리가 필요합니다.현재 날짜의 NSDate 가져 오기 - 3 개월

"dateByAddingTimeInterval"작업을 알고 있지만 대신 3 개월을 빼야합니다.

답변

1

3 개월을 어떻게 정의하는지에 따라 다릅니다. 물론

NSCalendar *calendar = [NSCalendar currentCalendar]; 
    NSDateComponents *components = [calendar components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSYearCalendarUnit |NSMonthCalendarUnit|NSDayCalendarUnit) fromDate:[NSDate date]]; 

    NSInteger now_hour = [components hour]; 
    NSInteger now_minute = [components minute]; 
    NSInteger yearx = [components year]; 
    NSInteger monthx = [components month]; 
    NSInteger dayx = [components day]; 

    //1 = january 
    NSInteger monthsMinus3 = (monthx > 3) ? monthx -3 : (monthx +12 -3); 
    NSDateComponents *comps = [[NSDateComponents alloc] init]; 
    [comps setMinute:now_minute]; 
    [comps setHour:now_hour]; 
    [comps setYear:yearx]; 
    [comps setMonth:monthx]; 
    [comps setDay:dayx]; 
    NSDate *threeMonthAgo = [calendar dateFromComponents:comps]; 

당신은 또한 별도의 날짜를 만들 필요없이 월을 변경할 수 있지만, 나는 생은에, 명확하고 더 유연 생각 : 당신이 2 개월 전 같은 날을 의미하는 경우는 다음과 같이 STH을 할 수 당신이 디버그하기를 원하는 경우와 가능한 변경 일 또한 3 개월 전을 -n 일로 정의하는 경우에 해당합니다. 예를 들어 - (30 + 31 + 30) 또는 - (31 + 30 + 31) 또는 februray 28 일을 고려해야합니다.

다시 3 개월 전 정의하는 방법에 따라 다르지만 해결책이 필요합니다.

관련 문제