8

この投稿を見ました: iOS and Finding Tomorrow

提供されるコードは次のとおりです。

units = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSDateComponents* comps = [[NSCalendar currentCalendar] components:units fromDate:[NSDate date]]; 
// Add one day
comps.day = comps.day+1; // no worries: even if it is the end of the month it will wrap to the next month, see doc
// Recompose a new date, without any time information (so this will be at midnight)
NSDate* tomorrowMidnight = [[NSCalendar currentCalendar] dateFromComponents:comps];

問題: たとえば、2013 年 6 月 21 日と 2013 年 5 月 21 日の差が 0 か月ではなく 1 か月になるように、現在の日付に 1 日追加する必要があります。

私が使用しているコード:

    NSDate *selectedDate = [picker2 date];
    unsigned int unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit;
    NSDateComponents *conversionInfo = [currCalendar components:unitFlags fromDate:selectedDate toDate:[NSDate date]  options:0];
    DLog(@"%i",conversionInfo.month);
    DLog(@"%i",conversionInfo.day);
    conversionInfo.day +=1;
    DLog(@"%i",conversionInfo.day);
    DLog(@"%i",conversionInfo.month);
    int months = [conversionInfo month];

しかし、2013 年 6 月 21 日と 2013 年 5 月 21 日の差を取得しようとすると、1 か月ではなく 0 か月が返されます。

これについては助けが必要です。

4

6 に答える 6

15

元の日付に追加する日数で日付コンポーネントを形成します。このコンポーネントを元の日付に追加することにより、現在のカレンダー形式の日付から。

NSDateComponents *dateComponents = [NSDateComponents new];
dateComponents.day = 1;
NSDate *newDate = [[NSCalendar currentCalendar]dateByAddingComponents:dateComponents 
                                                               toDate: selectedDate 
                                                              options:0];
于 2013-06-21T08:37:03.920 に答える
2

迅速なグーグルの場合:

NSCalendar.currentCalendar().dateByAddingUnit(NSCalendarUnit.CalendarUnitDay, value: 1, toDate: date, options: nil)!
于 2015-08-31T18:11:54.513 に答える
0

まず、NSDateComponent に月ではなく日を割り当てています。次のコードを実行し、inDate と newDate の違いを見つけます

NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *components = [calendar components:NSCalendarUnitMonth fromDate:inDate];

NSInteger monthFlag = 1; components.month = 分フラグ;

// Retrieve date with increased days count
NSDate *newDate = [[NSCalendar currentCalendar]
                   dateByAddingComponents:components
                                   toDate:monthFlag
                                  options:0];
于 2016-06-06T12:37:24.053 に答える