#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]。