0

現在の日付(3か月)を取得するにはどうすればよいですか?過去3か月間にすべてのファイルを取得するために、データベースクエリに必要です。

「dateByAddingTimeInterval」という操作は知っていますが、代わりに3か月を引く必要があります。

4

1 に答える 1

1

3か月の定義方法によって異なります。3か月前の同じ日を意味する場合は、次のようにsthを実行できます。

    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)または28日間のfebrurayを考慮する必要があります。

繰り返しますが、すべては3か月前にどのように定義するかによって異なります...しかし、これは解決策につながるはずです

于 2012-08-15T18:09:47.483 に答える