NSCalendarで月末(月の最終日)を取得するには

Javaだったら、


Calendar cal = Calendar.getInstance();
int max = cal.getMaximum(Calendar.DATE);
みたいな感じ(そらで書いたので間違ってるかも)で取れる、当月の月末が何日かを取得する方法。



NSCalendar *cal = [NSCalendar currentCalendar];

// 現在の月の最後を得る場合
NSDate *now = [NSDate date];

// inUnit:で指定した単位(月)の中で、rangeOfUnit:で指定した単位(日)が取り得る範囲
NSRange range = [cal rangeOfUnit:NSDayCalendarUnit inUnit:NSMonthCalendarUnit forDate:now];

NSInteger min = range.location;
// これが月末日
NSInteger max = rang.length;


現在じゃなくて指定した年月を指定するには、次のようにしてNSDateを作る。


NSDateComponents *comps = [[NSDateComponents allc] init];
// 2010/11を指定する場合
[comps setYear:2010];
[comps setMonth:11];

NSCalendar *cal = [NSCalendar currentCalendar];
NSDate *date = [cal dateFromComponents:comps];
[comps release];

慣れたらそんなに苦痛じゃない。