xcode NSCalendarUnit显示提前3个月
我正在计算当月的天数xcode NSCalendarUnit显示提前3个月,xcode,nsdate,nscalendar,Xcode,Nsdate,Nscalendar,我正在计算当月的天数 today = [NSDate date]; NSLog(@"%@", today); //calculate how much days in current month NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSRange days = [cal rangeOfUnit:NSDayCal
today = [NSDate date];
NSLog(@"%@", today);
//calculate how much days in current month
NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSRange days = [cal rangeOfUnit:NSDayCalendarUnit inUnit:NSMonthCalendarUnit forDate:today];
NSUInteger numberOfDaysInMonth = days.length;
NSLog(@"%d Days in month:%i", numberOfDaysInMonth, NSMonthCalendarUnit);
// end calculating
在日志中显示的是八月而不是五月
为什么会这样?我错过了什么
谢谢
2013-05-07 21:39:01.344 n计时器[89023:c07]2013-05-07 18:39:01+0000
2013-05-07 21:39:01.345 N时间[89023:c07]月内31天:8
答复:
谢谢@artur
这是一个正确的代码
today = [NSDate date];
NSLog(@"%@", today);
//calculate how much days in current month
NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
int units = NSMonthCalendarUnit;
NSDateComponents *comps = [cal components:units fromDate:today];
NSRange days = [cal rangeOfUnit:NSDayCalendarUnit inUnit:NSMonthCalendarUnit forDate:today];
NSUInteger numberOfDaysInMonth = days.length;
NSLog(@"%d Days in month:%i", numberOfDaysInMonth, comps.month);
// end calculating
日志现在显示:
2013-05-07 22:25:04.855 NsTimer[89623:c07] 2013-05-07 19:25:04 +0000
2013-05-07 22:25:04.856 NsTimer[89623:c07] 31 Days in month:5
您将
NSMonthCalendarUnit
记录为整数(%i
)。它只是枚举标志值,意外为8。要显示月数,应使用[[calendar components:NSMonthCalendarUnit fromDate:today]month]
将其提取出来