iOS NSCalendar獲取當月天數
阿新 • • 發佈:2018-11-07
獲取當月第一天是周幾
- (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; }