#iOS 时间那点事框架
##NSDate分类(Catogery)编码
###分类.net
###NSDate (JBCommon)code
####代表决心! 头文件,是咱们代表决心地方。年,月,日,时,分,秒,星期component
<!-- lang: cpp --> // NSDate+JBCommon.h @interface NSDate (JBCommon) /**************************************************** *@Description:得到NSDate对应的年份 *@Params:nil *@Return:NSDate对应的年份 ****************************************************/ - (NSUInteger)year; /**************************************************** *@Description:得到NSDate对应的月份 *@Params:nil *@Return:NSDate对应的月份 ****************************************************/ - (NSUInteger)month; /**************************************************** *@Description:得到NSDate对应的日期 *@Params:nil *@Return:NSDate对应的日期 ****************************************************/ - (NSUInteger)day; /**************************************************** *@Description:得到NSDate对应的小时数 *@Params:nil *@Return:NSDate对应的小时数 ****************************************************/ - (NSUInteger)hour; /**************************************************** *@Description:得到NSDate对应的分钟数 *@Params:nil *@Return:NSDate对应的分钟数 ****************************************************/ - (NSUInteger)minute; /**************************************************** *@Description:得到NSDate对应的秒数 *@Params:nil *@Return:NSDate对应的秒数 ****************************************************/ - (NSUInteger)second; /**************************************************** *@Description:得到NSDate对应的星期 *@Params:nil *@Return:NSDate对应的星期 ****************************************************/ - (NSUInteger)weekday; @end
####一块儿冒险吧! 任何惊喜在这以前都是空虚的,而如今,咱们要让“她”变成现实。orm
咱们慢慢来……对象
怎么获取年份呢?NSDateFomatter?仍是NSCalendar+NSDateComponents?NSDateFomatter尽管简单,但就是感受这么不正统呢;NSCalendar+NSDateComponents是否是太麻烦了?用哪一个呢? 要知道,咱们但是在作“伟大”的事情,固然要用NSCalendar+NSDateCompoents!blog
要实现一个NSDateComponents对象,而后获取年月日时分秒星期,好像还能够获取其余好些东西!!不错!这样全部的NSDate均可以使用这个NSDateComponents对象了!等等,咱们是否是要把NSDateComponents对象搞成静态的,这样就真是全部的NSDate对象用这一个NSDateComponents对象了。因而乎一个通过深思熟虑的伟大的方法产生了:继承
<!-- lang: cpp --> /********************************************************** *@Description:获取当天的包括“年”,“月”,“日”,“周”,“时”,“分”,“秒”等的NSDateComponents *@Params:nil *@Return:当天的包括“年”,“月”,“日”,“周”,“时”,“分”,“秒”等的NSDateComponents ***********************************************************/ - (NSDateComponents *)componentsOfDay { static NSDateComponents *dateComponents = nil; static NSDate *previousDate = nil; static NSCalendar *greCalendar; if (!greCalendar) { greCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; } if (!previousDate || ![previousDate isEqualToDate:self]) { previousDate = self; dateComponents = [greCalendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit | NSWeekdayOrdinalCalendarUnit | NSWeekCalendarUnit | NSWeekOfMonthCalendarUnit | NSWeekOfYearCalendarUnit| NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit fromDate:self]; } return dateComponents; }
咱们这里设置dateComponents的components属性的时候把之后可能会用到的都加上了,你们请自便哦~ 3. 有了伟大的2,3就简单多了。直接贴上代码!接口
<!-- lang: cpp --> // NSDate+JBCommon.m #import "NSDate+Calendar.h" @implementation NSDate (Calendar) /********************************************************** *@Description:获取当天的包括“年”,“月”,“日”,“周”,“时”,“分”,“秒”的NSDateComponents *@Params:nil *@Return:当天的包括“年”,“月”,“日”,“周”,“时”,“分”,“秒”的NSDateComponents ***********************************************************/ - (NSDateComponents *)componentsOfDay { static NSDateComponents *dateComponents = nil; static NSDate *previousDate = nil; static NSCalendar *greCalendar; if (!greCalendar) { greCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; } if (!previousDate || ![previousDate isEqualToDate:self]) { previousDate = self; dateComponents = [greCalendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit | NSWeekdayOrdinalCalendarUnit | NSWeekCalendarUnit | NSWeekOfMonthCalendarUnit | NSWeekOfYearCalendarUnit| NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit fromDate:self]; } return dateComponents; } /**************************************************** *@Description:得到NSDate对应的年份 *@Params:nil *@Return:NSDate对应的年份 ****************************************************/ - (NSUInteger)year { return [self componentsOfDay].year; } /**************************************************** *@Description:得到NSDate对应的月份 *@Params:nil *@Return:NSDate对应的月份 ****************************************************/ - (NSUInteger)month { return [self componentsOfDay].month; } /**************************************************** *@Description:得到NSDate对应的日期 *@Params:nil *@Return:NSDate对应的日期 ****************************************************/ - (NSUInteger)day { return [self componentsOfDay].day; } /**************************************************** *@Description:得到NSDate对应的小时数 *@Params:nil *@Return:NSDate对应的小时数 ****************************************************/ - (NSUInteger)hour { return [self componentsOfDay].hour; } /**************************************************** *@Description:得到NSDate对应的分钟数 *@Params:nil *@Return:NSDate对应的分钟数 ****************************************************/ - (NSUInteger)minute { return [self componentsOfDay].minute; } /**************************************************** *@Description:得到NSDate对应的秒数 *@Params:nil *@Return:NSDate对应的秒数 ****************************************************/ - (NSUInteger)second { return [self componentsOfDay].second; } /**************************************************** *@Description:得到NSDate对应的星期 *@Params:nil *@Return:NSDate对应的星期 ****************************************************/ - (NSUInteger)weekday { return [self componentsOfDay].weekday; } @end
这一节也告一段落了~ 哈哈~
######多谢你们的提醒,已将[NSCalendar currentCalendar]改成了[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]。