iOS NSCalendar获取当月天数

获取当月第一天是周几

- (void)calculationThisMonthFirstDayInWeek:(NSDate *)date;
{
    if (isEmpty(date)) {
        date = [NSDate date];
    }
    NSCalendar * calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
    NSDateComponents * comps = [[NSDateComponents alloc] init];
    NSDateComponents * theComps = [[NSDateComponents alloc] init];
    NSInteger unitFlags = NSCalendarUnitDay | NSCalendarUnitWeekday | NSCalendarUnitMonth | NSCalendarUnitYear;
    comps = [calendar components:unitFlags fromDate:date];
    theComps = [calendar components:unitFlags fromDate:[NSDate date]];
//    NSInteger theMonth = [theComps month];// 本月的月份
    NSUInteger day = [comps day];// 是本月第几天
//    NSInteger todayInMonth = day;
//    NSString *dateStr = [[self showDateFormatter] stringFromDate:date];
//    NSString *todayStr = [dateFormatter stringFromDate:[NSDate date]];
    if (day > 1) {// 如果不是本月第一天
        // 将日期推算到本月第一天
        NSInteger hours = (day - 1) * -24;
        date = [NSDate dateWithTimeInterval:hours * 60 * 60 sinceDate:date];
    }
    comps = [calendar components:unitFlags fromDate:date];
    dayInWeek = [comps weekday] - 1;// 是周几
    
//    NSInteger year = [comps year];// 公历年
//    NSInteger month = [comps month];// 公里月
//    if ([dateStr isEqualToString:todayStr]) {
//        NSLog(@"%ld",(long)day + dayInWeek - 2);
//    }
}

 获取某年某月 有多少天

// 获取某年某月总共多少天
- (NSInteger)getDaysInMonth:(NSInteger)year month:(NSInteger)imonth {
    // imonth == 0的情况是应对在CourseViewController里month-1的情况
    if((imonth == 0)||(imonth == 1)||(imonth == 3)||(imonth == 5)||(imonth == 7)||(imonth == 8)||(imonth == 10)||(imonth == 12))
        return 31;
    if((imonth == 4)||(imonth == 6)||(imonth == 9)||(imonth == 11))
        return 30;
    if((year%4 == 1)||(year%4 == 2)||(year%4 == 3))
    {
        return 28;
    }
    if(year%400 == 0)
        return 29;
    if(year%100 == 0)
        return 28;
    return 29;
}

获取本月有多少天

- (NSInteger)calculationThisMonthDays:(NSDate *)days
{
    NSCalendar * calendar = [NSCalendar currentCalendar];
    if (isEmpty(days)) {
        days = [NSDate date];
    }
    NSRange range = [calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:days];
    return range.length;
}

猜你喜欢

转载自blog.csdn.net/u011043997/article/details/81942673