-(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; }