NSDate以正确的方式添加一个月,如果前一个月有更多天,则剪裁

Pet*_*isu 4 objective-c nsdate nscalendar

我使用此方法将月份添加到日期

- (NSDate *)sameDateByAddingMonths:(NSInteger)addMonths {

    NSCalendar *calendar = [NSCalendar currentCalendar];

    NSDateComponents * components = [calendar components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:self];
    [components setMonth:components.month + addMonths];

    return [calendar dateFromComponents:components];

}
Run Code Online (Sandbox Code Playgroud)

但是当前一个月在自我NSDate,有更多的日子,比它在下个月的第一天跳跃,就像

6月31日=>自我是6月31日召集这个,将日期设定为1. 8月,自7月起30天

如何做到这一点?我认为这应该表现得"正确",并在月末剪辑

Mar*_*n R 8

dateByAddingComponents是为了:

- (NSDate *)sameDateByAddingMonths:(NSInteger)addMonths {

    NSCalendar *calendar = [NSCalendar currentCalendar];

    NSDateComponents *components = [[NSDateComponents alloc] init];
    [components setMonth:addMonths];

    return [calendar dateByAddingComponents:components toDate:self options:0];
}
Run Code Online (Sandbox Code Playgroud)