需求:给出日期,得出该月的天数
/** 根据给定的日期返回该月的天数 @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: 28NSCalendar中的 -(NSRange)rangeOfUnit:(NSCalendarUnit)smaller inUnit:(NSCalendarUnit)larger forDate:(NSDate *)date; 作用: 根据指定的日期返回较小日历单位在较大日历单位中的范围。 参数: smaller 较小的日历单位 larger 较大的日历单位 date 指定的日期