iOS - 获取两个日期之间所有日期


/// 获取两个日期之间所有日期数组,精确到天
/// @param startDateStr 开始日期
/// @param endDateStr 结束日期
- (NSArray *)getDateArrWithStartDate:(NSString *)startDateStr endDate:(NSString *)endDateStr {
    
    // 计算两个时间的差值
    NSCalendar *calendar = [NSCalendar currentCalendar];
    // 需要对比的时间数据 NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
    NSCalendarUnit unit = NSCalendarUnitDay;
    
    NSDateFormatter *dateMatter = [[NSDateFormatter alloc] init];
    dateMatter.dateFormat = @"yyyy-MM-dd";
    NSDate *beginDate = [dateMatter dateFromString:startDateStr];
    NSDate *endDate = [dateMatter dateFromString:endDateStr];
    
    // 对比时间差
    NSDateComponents *dateCom = [calendar components:unit fromDate:beginDate toDate:endDate options:0];
     
    // 两个日期之间所有天数组成的数组
    NSMutableArray *allDayArr = [NSMutableArray new];
    for (int i = 0 ; i < dateCom.day+1 ; i ++) {
        // n天后的天数
        int days = i;
        // 一天一共有多少秒
        NSTimeInterval oneDay = 24 * 60 * 60;
        // 指定的日期
        NSDate *appointDate = [NSDate dateWithTimeInterval:oneDay * days sinceDate:beginDate];
        // 转字符串
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"yyyy-MM-dd"]; // @"yyyy-MM-dd"
        NSString *appointTime = [dateFormatter stringFromDate:appointDate];
        [allDayArr addObject:appointTime];

    }
        return allDayArr;
}

文章作者: 逸之
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 逸之 !
  目录