NSCalendar クラスの ordinalityOfUnit:inUnit:forDate:メソッドが便利だったのでメモしておきます。
例えば、月末が月の第何周であるか?とか調べるのに利用できます。
その他、年内で第何周であるか?とかも調べられるはず。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | // NSDate にカテゴリでメソッドを追加しておく @interface NSDate (DateAdditions) // 月の日数を取得する - (NSUInteger)getNumberOfDaysInMonth { return [[NSCalendar currentCalendar] rangeOfUnit:NSDayCalendarUnit inUnit:NSMonthCalendarUnit forDate:self].length; } : : // 月の日数を取得する NSDate *todayDate = [NSDate date]; NSUInteger lastdayInMonth = [todayDate getNumberOfDaysInMonth]; // 本日日付を年月日で分解する NSCalendar *cal = [NSCalendar currentCalendar]; NSDateComponents *dateComps = [cal components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:[NSDate date]]; // 月末日付を取得する NSDateComponents *comps = [[NSDateComponents alloc] init]; [comps setYear:dateComps.year]; [comps setMonth:dateComps.month]; [comps setDay:lastdayInMonth]; NSDate *lastDate = [cal dateFromComponents:comps]; [comps release]; // 月末が第何週目か取得する NSUInteger lastdayWeekNo = [cal ordinalityOfUnit:NSWeekCalendarUnit inUnit:NSMonthCalendarUnit forDate:lastDate]; // 本日が月の第何週目か取得する NSUInteger todayWeekNo = [cal ordinalityOfUnit:NSWeekCalendarUnit inUnit:NSMonthCalendarUnit forDate:[NSDate date]]; |