0

如何获得当前日期 - 3 个月?我需要它来进行数据库查询以获取过去 3 个月内的所有文件。

我知道操作“dateByAddingTimeInterval”,但我必须减去 3 个月。

4

1 回答 1

1

取决于您如何定义 3 个月。如果您的意思是 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];

当然,您也可以更改月份而无需创建额外的日期,但我认为这更清晰、更灵活,以防您想调试并可能更改日期,以防您在 3 个月前定义 -n 天取决于我们在哪个月份。例如 - (30+31+30) 或 -(31+30+31) 或必须考虑 2 月 28 天。

同样,一切都取决于您在 3 个月前如何定义……但这应该会引导您找到解决方案

于 2012-08-15T18:09:47.483 回答