需求:给出日期,得出该月的天数
/**
根据给定的日期返回该月的天数
@param dateStr 特定的日期格式
@return 该月天数
*/
- (NSInteger)numberOfDayInMonthWithDateStr:(NSString *)dateStr {
NSDate * date = [self dateWithdateSr:dateStr];
NSCalendar * calendar = [[NSCalendar alloc]initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
// 通过该方法计算特定日期月份的天数
NSRange monthRange = [calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:date];
return monthRange.length;
}
/**
根据给出的日期获得NSDate
@param dateStr 日期
@return 对应的NSDate
*/
- (NSDate *)dateWithdateSr:(NSString *)dateStr {
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc]init];
// 此处根据需求改对应的日期格式
[dateFormatter setDateFormat:@"yyyy-MM"];
NSDate * date = [dateFormatter dateFromString:dateStr];
return date;
}
例子
NSLog(@"%ld", [self numberOfDayInMonthWithDateStr:@"2017-02"]);
result: 28
NSCalendar中的
-(NSRange)rangeOfUnit:(NSCalendarUnit)smaller inUnit:(NSCalendarUnit)larger forDate:(NSDate *)date;
作用: 根据指定的日期返回较小日历单位在较大日历单位中的范围。
参数:
smaller 较小的日历单位
larger 较大的日历单位
date 指定的日期