10

現在の日付から前の週と月を取得する必要があります。

だから私は現在の日付追加間隔を再計算できる解決策を見つけました

- dateByAddingTimeInterval

そしてそれのためのこのパラメータ:

[[NSDate date] dateByAddingTimeInterval: -604800.0](前週を取得するため)

[[NSDate date] dateByAddingTimeInterval: -2629743.83](前月取得用)

週を取得するために私が思うように、この方法は問題なく機能します。なぜなら、毎週は7日であり、間隔は変わらないからです。しかし、月ごとに日数が異なるため、月については問題があります。

4

2 に答える 2

35

それを使用NSDateComponentsするのは簡単で正確でしょう

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *comps = [NSDateComponents new];
comps.month = -1;
comps.day   = -1;
NSDate *date = [calendar dateByAddingComponents:comps toDate:[NSDate date] options:0];
NSDateComponents *components = [calendar components:NSMonthCalendarUnit|NSDayCalendarUnit fromDate:date]; // Get necessary date components
NSLog(@"Previous month: %d",[components month]);
NSLog(@"Previous day  : %d",[components day]);
于 2013-03-25T09:41:28.473 に答える
9

日付の変更に903484と-23484を使用しないでください

このようにします:

NSCalendar *gregorian=[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components=[[NSDateComponents alloc] init];

components.month=1;//next month
components.month=-1;//previous month
//similarly +1 and -1 will give you week and month day etc
components.week=1;
components.day=1;

NSDate *myMonth=[gregorian dateByAddingComponents:components toDate:today options:0];
NSDateComponents *components = [calendar components:NSMonthCalendarUnit|NSDayCalendarUnit fromDate:date]; 
NSInteger yourRequiredValue=[components day]; //day, month, week etc
于 2013-03-25T09:41:10.727 に答える