未来一年数据

75 阅读1分钟

-(NSArray *)setOneYearDaysArr {

NSMutableArray *dateModelArray = [NSMutableArray array];

NSString *startDay = [NSDate mvpDate:[NSDate mvpNow:@"yyyy-MM-dd"] afterDays:-[NSDate mvpDay] withFormat:@"yyyy-MM-dd"];
NSInteger days = 365;
// 今年或者明年是闰年,获取366天的数据
if ([self getIsLeapYearWithYear:[NSDate mvpYear]] || [self getIsLeapYearWithYear:[self getSecondYearStartDate:startDay]]) {
    days = 366;
}
NSArray *dayArray = [self getDatesWithStartDate:[NSDate mvpNow:@"yyyy-MM-dd"] endDate:[NSDate mvpDate:startDay afterDays:days withFormat:@"yyyy-MM-dd"]];
for (NSDate *nowMonthFirst in dayArray) {
    NSDateComponents *components = [NSDate mvpDateComponentsFromDate:nowMonthFirst];
    MVPPBCalendarData *dateModel = [[MVPPBCalendarData alloc]init];
    dateModel.day = [NSString stringWithFormat:@"%ld",components.day];
    dateModel.month = [NSString stringWithFormat:@"%ld",components.month];
    dateModel.year = [NSString stringWithFormat:@"%ld",components.year];
    dateModel.weekday = [NSString stringWithFormat:@"%ld",components.weekday];
    [dateModelArray addObject:dateModel];
}
return  dateModelArray;

}

-(NSInteger)getSecondYearStartDate:(NSString *)dateString { NSDateFormatter *matter = [NSDate mvpChineseDateFormatter]; matter.dateFormat = @"yyyy-MM-dd"; NSDate *start = [matter dateFromString:dateString];

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents *offsetComponents = [[NSDateComponents alloc] init];
[offsetComponents setYear:1];
NSDate *nextYear = [gregorian dateByAddingComponents:offsetComponents toDate:start options:0];
NSDateComponents *cpmponent = [NSDate mvpDateComponentsFromDate:nextYear];

return cpmponent.year;

}

-(BOOL)getIsLeapYearWithYear:(NSInteger)year { if (year % 100 == 0) { if (year % 400 == 0 && year % 3200 != 0) { return YES; } } else { if (year % 4 == 0 && year % 100 != 0) { return YES; } } return NO; }

// 获取一年数据

  • (NSArray*)getDatesWithStartDate:(NSString *)startDate endDate:(NSString *)endDate {

    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier: NSCalendarIdentifierGregorian];

    //字符串转时间 NSDateFormatter *matter = [[NSDateFormatter alloc] init]; matter.dateFormat = @"yyyy-MM-dd"; NSDate *start = [matter dateFromString:startDate]; NSDate *end = [matter dateFromString:endDate];

    NSMutableArray *componentAarray = [NSMutableArray array]; NSComparisonResult result = [start compare:end]; NSDateComponents *comps; while (result != NSOrderedDescending) { comps = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekday fromDate:start]; [componentAarray addObject:start];

      //后一天
      [comps setDay:([comps day]+1)];
      start = [calendar dateFromComponents:comps];
      
      //对比日期大小
      result = [start compare:end];
    

    } return componentAarray; }