遇到一个需求,要获取前几个月的月份,并用这些时间数据去请求,刚好过了2018年,之前写的有点问题,于是就重新修改了方法,采用日历类来做。
来看获取上个月月份的代码,setMonth: 就是获取月份的关键,-1位上个月,1位下个月,以此类推
NSDate *currentDate = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM"];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *lastMonthComps = [[NSDateComponents alloc] init];
[lastMonthComps setMonth:-1];
NSDate *newdate = [calendar dateByAddingComponents:lastMonthComps toDate:currentDate options:0];
NSString *dateStr = [formatter stringFromDate:newdate];
SRQLog(@"date str = %@", dateStr);
那么我这里要获取之前六个月的月份就可以这样写:
+ (NSMutableArray *)lastMonthArray{
NSMutableArray *monthArray = [NSMutableArray array];
NSDate *currentDate = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM"];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *lastMonthComps = [[NSDateComponents alloc] init];
for (int i = 0; i < 6; i ++) {
[lastMonthComps setMonth:-i];
NSDate *newdate = [calendar dateByAddingComponents:lastMonthComps toDate:currentDate options:0];
NSString *dateStr = [formatter stringFromDate:newdate];
SRQLog(@"date str = %@", dateStr);
DateModel *model = [[DateModel alloc] init];
model.year = [[dateStr componentsSeparatedByString:@"-"].firstObject integerValue];
model.month = [[dateStr componentsSeparatedByString:@"-"].lastObject integerValue];
[monthArray addObject:model];
}
return monthArray;
}