今天写个日历,需要知道当月天数,在百度N久之后,都没有收获或者方法不尽人意,
于是,我看NSCanlendar类中的方法说明,终于找到了rangeIfUnit这个方法,帮助说明如下图所示,
① 小单位是NSDayCalendarUnit,大单位是NSYearCalendarUnit,并不是要取这一年包含多少天,而是要取"天"(Day)这个单位在这一年(Year)的取值范围。其实不管你提供的日期是多少,返回的值都是"1--31"。
② 小单位是NSDayCalendarUnit,大单位是NSMonthCalendarUnit。要取得参数时间点所对应的月份下,"天"(Day)的取值范围。根据参数时间的月份不同,值也不同。例如2月是1--28、3月是1--31、4月是1--30。
③ 小单位是NSWeekCalendarUnit,大单位是NSMonthCalendarUnit。要取得参数时间点所对应的月份下,"周"(Week)的取值范围。需要注意的是结果会受到minimumDaysInFirstWeek属性的影响。在默认minimumDaysInFirstWeek情况下,取得的范围值一般是"1--5",从日历上可以看出来这个月包含5排,即5个周。
④ 小单位是NSDayCalendarUnit,大单位是NSWeekCalendarUnit。要取得周所包含的"天"(Day)的取值范围。
下面给出获取天数的示例代码
//获取当前月天数 +(NSInteger) totalDayOfMonthWithDate:(NSString*) date format:(NSString*) format{ NSCalendar *calendar = [NSCalendar currentCalendar]; NSRange range = [calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:[PubConstans dateFromString:date format:format]]; return range.length; }
其中上述代码中的dateFromString方法为封装字符串转换成日期的方法,代码如下:
+(NSDate*) dateFromString:(NSString*) date format:(NSString*) format{ NSDateFormatter *formatter = [[NSDateFormatter alloc ] init]; [formatter setDateFormat:format]; return [formatter dateFromString:date]; }
相应的改变rangeOfUnit的参数,就可以得到不同的范围,读者可以自己试一下!
上述内容,如果有不正确的,还望批评指正!
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/chengjiamei/article/details/47316045