iOS 分类收集

.h文件

#import

#define D_MINUTE60

#define D_HOUR3600

#define D_DAY86400

#define D_WEEK604800

#define D_YEAR31556926

@interfaceNSDate (Category)

/**

*

*当前时间转换为时间戳

*

*/

+ (NSString*)getNowTimeStamp;

/**

*

*时间戳转换为时间

*

*/

+ (NSString*)getNowTime: (NSString*)stamp;

/**

*

*得到当前时间,yyyy-MM-dd HH:mm:ss

*

*/

+(NSString*)getNowChinaTime;

- (NSString*)timeIntervalDescription;//距离当前的时间间隔描述

- (NSString*)minuteDescription;/*精确到分钟的日期描述*/

- (NSString*)formattedTime;

- (NSString*)formattedDateDescription;//格式化日期描述

- (double)timeIntervalSince1970InMilliSecond;

+ (NSDate*)dateWithTimeIntervalInMilliSecondSince1970:(double)timeIntervalInMilliSecond;

+ (NSString*)formattedTimeFromTimeInterval:(longlong)time;

// Relative dates from the current date

+ (NSDate*) dateTomorrow;

+ (NSDate*) dateYesterday;

+ (NSDate*) dateWithDaysFromNow: (NSInteger) days;

+ (NSDate*) dateWithDaysBeforeNow: (NSInteger) days;

+ (NSDate*) dateWithHoursFromNow: (NSInteger) dHours;

+ (NSDate*) dateWithHoursBeforeNow: (NSInteger) dHours;

+ (NSDate*) dateWithMinutesFromNow: (NSInteger) dMinutes;

+ (NSDate*) dateWithMinutesBeforeNow: (NSInteger) dMinutes;

// Comparing dates

- (BOOL) isEqualToDateIgnoringTime: (NSDate*) aDate;

- (BOOL) isToday;

- (BOOL) isTomorrow;

- (BOOL) isYesterday;

- (BOOL) isSameWeekAsDate: (NSDate*) aDate;

- (BOOL) isThisWeek;

- (BOOL) isNextWeek;

- (BOOL) isLastWeek;

- (BOOL) isSameMonthAsDate: (NSDate*) aDate;

- (BOOL) isThisMonth;

- (BOOL) isSameYearAsDate: (NSDate*) aDate;

- (BOOL) isThisYear;

- (BOOL) isNextYear;

- (BOOL) isLastYear;

- (BOOL) isEarlierThanDate: (NSDate*) aDate;

- (BOOL) isLaterThanDate: (NSDate*) aDate;

- (BOOL) isInFuture;

- (BOOL) isInPast;

// Date roles

- (BOOL) isTypicallyWorkday;

- (BOOL) isTypicallyWeekend;

// Adjusting dates

- (NSDate*) dateByAddingDays: (NSInteger) dDays;

- (NSDate*) dateBySubtractingDays: (NSInteger) dDays;

- (NSDate*) dateByAddingHours: (NSInteger) dHours;

- (NSDate*) dateBySubtractingHours: (NSInteger) dHours;

- (NSDate*) dateByAddingMinutes: (NSInteger) dMinutes;

- (NSDate*) dateBySubtractingMinutes: (NSInteger) dMinutes;

- (NSDate*) dateAtStartOfDay;

// Retrieving intervals

- (NSInteger) minutesAfterDate: (NSDate*) aDate;

- (NSInteger) minutesBeforeDate: (NSDate*) aDate;

- (NSInteger) hoursAfterDate: (NSDate*) aDate;

- (NSInteger) hoursBeforeDate: (NSDate*) aDate;

- (NSInteger) daysAfterDate: (NSDate*) aDate;

- (NSInteger) daysBeforeDate: (NSDate*) aDate;

- (NSInteger)distanceInDaysToDate:(NSDate*)anotherDate;

// Decomposing dates

@property(readonly)NSIntegernearestHour;

@property(readonly)NSIntegerhour;

@property(readonly)NSIntegerminute;

@property(readonly)NSIntegerseconds;

@property(readonly)NSIntegerday;

@property(readonly)NSIntegermonth;

@property(readonly)NSIntegerweek;

@property(readonly)NSIntegerweekday;

@property(readonly)NSIntegernthWeekday;// e.g. 2nd Tuesday of the month == 2

@property(readonly)NSIntegeryear;

@end

.m文件

#import"NSDate+Category.h"

#import"NSDateFormatter+Category.h"

#define DATE_COMPONENTS (NSYearCalendarUnit| NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekCalendarUnit |NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit | NSWeekdayCalendarUnit | NSWeekdayOrdinalCalendarUnit)

#define CURRENT_CALENDAR [NSCalendar currentCalendar]

@implementationNSDate (Category)

+(NSString*)getNowTimeStamp {

NSDateFormatter*formatter = [[NSDateFormatteralloc]init];

[formattersetDateFormat:@"yyyy-MM-dd HH:mm:ss"];

NSDate*date = [NSDatedate];

NSTimeZone*zone = [NSTimeZonesystemTimeZone];

NSIntegerinterval = [zonesecondsFromGMTForDate:date];

NSDate*localeDate = [datedateByAddingTimeInterval: interval];

NSString*timeSp = [NSStringstringWithFormat:@"%ld",(long)[localeDatetimeIntervalSince1970]];

NSLog(@"当前时间的时间戳:%@",timeSp);

returntimeSp;

}

+ (NSString*)getNowTime: (NSString*)stamp{

NSTimeIntervaltime=[stampdoubleValue] ;//因为时差问题要加8小时== 28800 sec

NSDate*detaildate=[NSDatedateWithTimeIntervalSince1970:time];

NSLog(@"date:%@",[detaildatedescription]);

NSString*currentDateStr = [detaildatedescription];

return[currentDateStrsubstringToIndex:19];

}

+(NSString*)getNowChinaTime {

NSDate*date = [NSDatedate];

//如果这里转换了就是格林威治时间

//时区转换,取得系统时区,取得格林威治时间差秒

//NSTimeIntervaltimeZoneOffset=[[NSTimeZone systemTimeZone] secondsFromGMT];

////NSLog(@"%f",timeZoneOffset/60.0/60.0);

//

//date = [date dateByAddingTimeInterval:timeZoneOffset];

//格式化日期时间

NSDateFormatter*dateformatter=[[NSDateFormatteralloc]init];

[dateformattersetDateFormat:@"yyyyMMdd"];

NSString* dateStr=[dateformatterstringFromDate:date];

NSLog(@"当前时间:%@",dateStr);

returndateStr;

}

/*距离当前的时间间隔描述*/

- (NSString*)timeIntervalDescription

{

NSTimeIntervaltimeInterval = -[selftimeIntervalSinceNow];

if(timeInterval <60) {

returnNSLocalizedString(@"NSDateCategory.text1",@"");

}elseif(timeInterval <3600) {

return[NSStringstringWithFormat:NSLocalizedString(@"NSDateCategory.text2",@""), timeInterval /60];

}elseif(timeInterval <86400) {

return[NSStringstringWithFormat:NSLocalizedString(@"NSDateCategory.text3",@""), timeInterval /3600];

}elseif(timeInterval <2592000) {//30天内

return[NSStringstringWithFormat:NSLocalizedString(@"NSDateCategory.text4",@""), timeInterval /86400];

}elseif(timeInterval <31536000) {//30天至1年内

NSDateFormatter*dateFormatter = [NSDateFormatterdateFormatterWithFormat:NSLocalizedString(@"NSDateCategory.text5",@"")];

return[dateFormatterstringFromDate:self];

}else{

return[NSStringstringWithFormat:NSLocalizedString(@"NSDateCategory.text6",@""), timeInterval /31536000];

}

}

/*精确到分钟的日期描述*/

- (NSString*)minuteDescription

{

NSDateFormatter*dateFormatter = [NSDateFormatterdateFormatterWithFormat:@"yyyy-MM-dd HH:mm:ss"];

NSString*theDay = [dateFormatterstringFromDate:self];//日期的年月日

NSString*currentDay = [dateFormatterstringFromDate:[NSDatedate]];//当前年月日

if([theDayisEqualToString:currentDay]) {//当天

[dateFormattersetDateFormat:@"ah:mm"];

return[dateFormatterstringFromDate:self];

}elseif([[dateFormatterdateFromString:currentDay]timeIntervalSinceDate:[dateFormatterdateFromString:theDay]] ==86400) {//昨天

[dateFormattersetDateFormat:@"ah:mm"];

return[NSStringstringWithFormat:NSLocalizedString(@"NSDateCategory.text7", @'"'), [dateFormatterstringFromDate:self]];

}elseif([[dateFormatterdateFromString:currentDay]timeIntervalSinceDate:[dateFormatterdateFromString:theDay]] <86400*7) {//间隔一周内

[dateFormattersetDateFormat:@"EEEE ah:mm"];

return[dateFormatterstringFromDate:self];

}else{//以前

[dateFormattersetDateFormat:@"yyyy-MM-dd ah:mm"];

return[dateFormatterstringFromDate:self];

}

}

/*标准时间日期描述*/

-(NSString*)formattedTime{

NSDateFormatter* formatter = [[NSDateFormatteralloc]init];

[formattersetDateFormat:@"YYYY-MM-dd"];

NSString* dateNow = [formatterstringFromDate:[NSDatedate]];

NSDateComponents*components = [[NSDateComponentsalloc]init];

[componentssetDay:[[dateNowsubstringWithRange:NSMakeRange(8,2)]intValue]];

[componentssetMonth:[[dateNowsubstringWithRange:NSMakeRange(5,2)]intValue]];

[componentssetYear:[[dateNowsubstringWithRange:NSMakeRange(0,4)]intValue]];

NSCalendar*gregorian = [[NSCalendaralloc]initWithCalendarIdentifier:NSGregorianCalendar];

NSDate*date = [gregoriandateFromComponents:components];//今天0点时间

NSIntegerhour = [selfhoursAfterDate:date];

NSDateFormatter*dateFormatter =nil;

NSString*ret =@"";

//hasAMPM==TURE为12小时制,否则为24小时制

NSString*formatStringForHours = [NSDateFormatterdateFormatFromTemplate:@"j"options:0locale:[NSLocalecurrentLocale]];

NSRangecontainsA = [formatStringForHoursrangeOfString:@"a"];

BOOLhasAMPM = containsA.location!=NSNotFound;

if(!hasAMPM) {//24小时制

if(hour <=24&& hour >=0) {

dateFormatter = [NSDateFormatterdateFormatterWithFormat:@"HH:mm"];

}elseif(hour <0&& hour >= -24) {

dateFormatter = [NSDateFormatterdateFormatterWithFormat:NSLocalizedString(@"NSDateCategory.text8",@"")];

}else{

dateFormatter = [NSDateFormatterdateFormatterWithFormat:@"yyyy-MM-dd"];

}

}else{

if(hour >=0&& hour <=6) {

dateFormatter = [NSDateFormatterdateFormatterWithFormat:NSLocalizedString(@"NSDateCategory.text9",@"")];

}elseif(hour >6&& hour <=11) {

dateFormatter = [NSDateFormatterdateFormatterWithFormat:NSLocalizedString(@"NSDateCategory.text10",@"")];

}elseif(hour >11&& hour <=17) {

dateFormatter = [NSDateFormatterdateFormatterWithFormat:NSLocalizedString(@"NSDateCategory.text11",@"")];

}elseif(hour >17&& hour <=24) {

dateFormatter = [NSDateFormatterdateFormatterWithFormat:NSLocalizedString(@"NSDateCategory.text12",@"")];

}elseif(hour <0&& hour >= -24){

dateFormatter = [NSDateFormatterdateFormatterWithFormat:NSLocalizedString(@"NSDateCategory.text13",@"")];

}else{

dateFormatter = [NSDateFormatterdateFormatterWithFormat:@"yyyy-MM-dd"];

}

}

ret = [dateFormatterstringFromDate:self];

returnret;

}

/*格式化日期描述*/

- (NSString*)formattedDateDescription

{

NSDateFormatter*dateFormatter = [[NSDateFormatteralloc]init];

[dateFormattersetDateFormat:@"yyyy-MM-dd"];

NSString*theDay = [dateFormatterstringFromDate:self];//日期的年月日

NSString*currentDay = [dateFormatterstringFromDate:[NSDatedate]];//当前年月日

NSIntegertimeInterval = -[selftimeIntervalSinceNow];

if(timeInterval <60) {

returnNSLocalizedString(@"NSDateCategory.text1",@"");

}elseif(timeInterval <3600) {//1小时内

return[NSStringstringWithFormat:NSLocalizedString(@"NSDateCategory.text2",@""), timeInterval /60];

}elseif(timeInterval <21600) {//6小时内

return[NSStringstringWithFormat:NSLocalizedString(@"NSDateCategory.text3",@""), timeInterval /3600];

}elseif([theDayisEqualToString:currentDay]) {//当天

[dateFormattersetDateFormat:@"HH:mm"];

return[NSStringstringWithFormat:NSLocalizedString(@"NSDateCategory.text14",@""), [dateFormatterstringFromDate:self]];

}elseif([[dateFormatterdateFromString:currentDay]timeIntervalSinceDate:[dateFormatterdateFromString:theDay]] ==86400) {//昨天

[dateFormattersetDateFormat:@"HH:mm"];

return[NSStringstringWithFormat:NSLocalizedString(@"NSDateCategory.text7",@""), [dateFormatterstringFromDate:self]];

}else{//以前

[dateFormattersetDateFormat:@"yyyy-MM-dd HH:mm"];

return[dateFormatterstringFromDate:self];

}

}

- (double)timeIntervalSince1970InMilliSecond {

doubleret;

ret = [selftimeIntervalSince1970] *1000;

returnret;

}

+ (NSDate*)dateWithTimeIntervalInMilliSecondSince1970:(double)timeIntervalInMilliSecond {

NSDate*ret =nil;

doubletimeInterval = timeIntervalInMilliSecond;

// judge if the argument is in secconds(for former data structure).

if(timeIntervalInMilliSecond >140000000000) {

timeInterval = timeIntervalInMilliSecond /1000;

}

ret = [NSDatedateWithTimeIntervalSince1970:timeInterval];

returnret;

}

+ (NSString*)formattedTimeFromTimeInterval:(longlong)time{

return[[NSDatedateWithTimeIntervalInMilliSecondSince1970:time]formattedTime];

}

#pragma mark Relative Dates

+ (NSDate*) dateWithDaysFromNow: (NSInteger) days

{

// Thanks, Jim Morrison

return[[NSDatedate]dateByAddingDays:days];

}

+ (NSDate*) dateWithDaysBeforeNow: (NSInteger) days

{

// Thanks, Jim Morrison

return[[NSDatedate]dateBySubtractingDays:days];

}

+ (NSDate*) dateTomorrow

{

return[NSDatedateWithDaysFromNow:1];

}

+ (NSDate*) dateYesterday

{

return[NSDatedateWithDaysBeforeNow:1];

}

+ (NSDate*) dateWithHoursFromNow: (NSInteger) dHours

{

NSTimeIntervalaTimeInterval = [[NSDatedate]timeIntervalSinceReferenceDate] +D_HOUR* dHours;

NSDate*newDate = [NSDatedateWithTimeIntervalSinceReferenceDate:aTimeInterval];

returnnewDate;

}

+ (NSDate*) dateWithHoursBeforeNow: (NSInteger) dHours

{

NSTimeIntervalaTimeInterval = [[NSDatedate]timeIntervalSinceReferenceDate] -D_HOUR* dHours;

NSDate*newDate = [NSDatedateWithTimeIntervalSinceReferenceDate:aTimeInterval];

returnnewDate;

}

+ (NSDate*) dateWithMinutesFromNow: (NSInteger) dMinutes

{

NSTimeIntervalaTimeInterval = [[NSDatedate]timeIntervalSinceReferenceDate] +D_MINUTE* dMinutes;

NSDate*newDate = [NSDatedateWithTimeIntervalSinceReferenceDate:aTimeInterval];

returnnewDate;

}

+ (NSDate*) dateWithMinutesBeforeNow: (NSInteger) dMinutes

{

NSTimeIntervalaTimeInterval = [[NSDatedate]timeIntervalSinceReferenceDate] -D_MINUTE* dMinutes;

NSDate*newDate = [NSDatedateWithTimeIntervalSinceReferenceDate:aTimeInterval];

returnnewDate;

}

#pragma mark Comparing Dates

- (BOOL) isEqualToDateIgnoringTime: (NSDate*) aDate

{

NSDateComponents*components1 = [CURRENT_CALENDARcomponents:DATE_COMPONENTSfromDate:self];

NSDateComponents*components2 = [CURRENT_CALENDARcomponents:DATE_COMPONENTSfromDate:aDate];

return((components1.year== components2.year) &&

(components1.month== components2.month) &&

(components1.day== components2.day));

}

- (BOOL) isToday

{

return[selfisEqualToDateIgnoringTime:[NSDatedate]];

}

- (BOOL) isTomorrow

{

return[selfisEqualToDateIgnoringTime:[NSDatedateTomorrow]];

}

- (BOOL) isYesterday

{

return[selfisEqualToDateIgnoringTime:[NSDatedateYesterday]];

}

// This hard codes the assumption that a week is 7 days

- (BOOL) isSameWeekAsDate: (NSDate*) aDate

{

NSDateComponents*components1 = [CURRENT_CALENDARcomponents:DATE_COMPONENTSfromDate:self];

NSDateComponents*components2 = [CURRENT_CALENDARcomponents:DATE_COMPONENTSfromDate:aDate];

// Must be same week. 12/31 and 1/1 will both be week "1" if they are in the same week

if(components1.week!= components2.week)returnNO;

// Must have a time interval under 1 week. Thanks @aclark

return(abs([selftimeIntervalSinceDate:aDate])

}

- (BOOL) isThisWeek

{

return[selfisSameWeekAsDate:[NSDatedate]];

}

- (BOOL) isNextWeek

{

NSTimeIntervalaTimeInterval = [[NSDatedate]timeIntervalSinceReferenceDate] +D_WEEK;

NSDate*newDate = [NSDatedateWithTimeIntervalSinceReferenceDate:aTimeInterval];

return[selfisSameWeekAsDate:newDate];

}

- (BOOL) isLastWeek

{

NSTimeIntervalaTimeInterval = [[NSDatedate]timeIntervalSinceReferenceDate] -D_WEEK;

NSDate*newDate = [NSDatedateWithTimeIntervalSinceReferenceDate:aTimeInterval];

return[selfisSameWeekAsDate:newDate];

}

// Thanks, mspasov

- (BOOL) isSameMonthAsDate: (NSDate*) aDate

{

NSDateComponents*components1 = [CURRENT_CALENDARcomponents:NSYearCalendarUnit|NSMonthCalendarUnitfromDate:self];

NSDateComponents*components2 = [CURRENT_CALENDARcomponents:NSYearCalendarUnit|NSMonthCalendarUnitfromDate:aDate];

return((components1.month== components2.month) &&

(components1.year== components2.year));

}

- (BOOL) isThisMonth

{

return[selfisSameMonthAsDate:[NSDatedate]];

}

- (BOOL) isSameYearAsDate: (NSDate*) aDate

{

NSDateComponents*components1 = [CURRENT_CALENDARcomponents:NSYearCalendarUnitfromDate:self];

NSDateComponents*components2 = [CURRENT_CALENDARcomponents:NSYearCalendarUnitfromDate:aDate];

return(components1.year== components2.year);

}

- (BOOL) isThisYear

{

// Thanks, baspellis

return[selfisSameYearAsDate:[NSDatedate]];

}

- (BOOL) isNextYear

{

NSDateComponents*components1 = [CURRENT_CALENDARcomponents:NSYearCalendarUnitfromDate:self];

NSDateComponents*components2 = [CURRENT_CALENDARcomponents:NSYearCalendarUnitfromDate:[NSDatedate]];

return(components1.year== (components2.year+1));

}

- (BOOL) isLastYear

{

NSDateComponents*components1 = [CURRENT_CALENDARcomponents:NSYearCalendarUnitfromDate:self];

NSDateComponents*components2 = [CURRENT_CALENDARcomponents:NSYearCalendarUnitfromDate:[NSDatedate]];

return(components1.year== (components2.year-1));

}

- (BOOL) isEarlierThanDate: (NSDate*) aDate

{

return([selfcompare:aDate] ==NSOrderedAscending);

}

- (BOOL) isLaterThanDate: (NSDate*) aDate

{

return([selfcompare:aDate] ==NSOrderedDescending);

}

// Thanks, markrickert

- (BOOL) isInFuture

{

return([selfisLaterThanDate:[NSDatedate]]);

}

// Thanks, markrickert

- (BOOL) isInPast

{

return([selfisEarlierThanDate:[NSDatedate]]);

}

#pragma mark Roles

- (BOOL) isTypicallyWeekend

{

NSDateComponents*components = [CURRENT_CALENDARcomponents:NSWeekdayCalendarUnitfromDate:self];

if((components.weekday==1) ||

(components.weekday==7))

returnYES;

returnNO;

}

- (BOOL) isTypicallyWorkday

{

return![selfisTypicallyWeekend];

}

#pragma mark Adjusting Dates

- (NSDate*) dateByAddingDays: (NSInteger) dDays

{

NSTimeIntervalaTimeInterval = [selftimeIntervalSinceReferenceDate] +D_DAY* dDays;

NSDate*newDate = [NSDatedateWithTimeIntervalSinceReferenceDate:aTimeInterval];

returnnewDate;

}

- (NSDate*) dateBySubtractingDays: (NSInteger) dDays

{

return[selfdateByAddingDays: (dDays * -1)];

}

- (NSDate*) dateByAddingHours: (NSInteger) dHours

{

NSTimeIntervalaTimeInterval = [selftimeIntervalSinceReferenceDate] +D_HOUR* dHours;

NSDate*newDate = [NSDatedateWithTimeIntervalSinceReferenceDate:aTimeInterval];

returnnewDate;

}

- (NSDate*) dateBySubtractingHours: (NSInteger) dHours

{

return[selfdateByAddingHours: (dHours * -1)];

}

- (NSDate*) dateByAddingMinutes: (NSInteger) dMinutes

{

NSTimeIntervalaTimeInterval = [selftimeIntervalSinceReferenceDate] +D_MINUTE* dMinutes;

NSDate*newDate = [NSDatedateWithTimeIntervalSinceReferenceDate:aTimeInterval];

returnnewDate;

}

- (NSDate*) dateBySubtractingMinutes: (NSInteger) dMinutes

{

return[selfdateByAddingMinutes: (dMinutes * -1)];

}

- (NSDate*) dateAtStartOfDay

{

NSDateComponents*components = [CURRENT_CALENDARcomponents:DATE_COMPONENTSfromDate:self];

components.hour=0;

components.minute=0;

components.second=0;

return[CURRENT_CALENDARdateFromComponents:components];

}

- (NSDateComponents*) componentsWithOffsetFromDate: (NSDate*) aDate

{

NSDateComponents*dTime = [CURRENT_CALENDARcomponents:DATE_COMPONENTSfromDate:aDatetoDate:selfoptions:0];

returndTime;

}

#pragma mark Retrieving Intervals

- (NSInteger) minutesAfterDate: (NSDate*) aDate

{

NSTimeIntervalti = [selftimeIntervalSinceDate:aDate];

return(NSInteger) (ti /D_MINUTE);

}

- (NSInteger) minutesBeforeDate: (NSDate*) aDate

{

NSTimeIntervalti = [aDatetimeIntervalSinceDate:self];

return(NSInteger) (ti /D_MINUTE);

}

- (NSInteger) hoursAfterDate: (NSDate*) aDate

{

NSTimeIntervalti = [selftimeIntervalSinceDate:aDate];

return(NSInteger) (ti /D_HOUR);

}

- (NSInteger) hoursBeforeDate: (NSDate*) aDate

{

NSTimeIntervalti = [aDatetimeIntervalSinceDate:self];

return(NSInteger) (ti /D_HOUR);

}

- (NSInteger) daysAfterDate: (NSDate*) aDate

{

NSTimeIntervalti = [selftimeIntervalSinceDate:aDate];

return(NSInteger) (ti /D_DAY);

}

- (NSInteger) daysBeforeDate: (NSDate*) aDate

{

NSTimeIntervalti = [aDatetimeIntervalSinceDate:self];

return(NSInteger) (ti /D_DAY);

}

// Thanks, dmitrydims

// I have not yet thoroughly tested this

- (NSInteger)distanceInDaysToDate:(NSDate*)anotherDate

{

NSCalendar*gregorianCalendar = [[NSCalendaralloc]initWithCalendarIdentifier:NSGregorianCalendar];

NSDateComponents*components = [gregorianCalendarcomponents:NSDayCalendarUnitfromDate:selftoDate:anotherDateoptions:0];

returncomponents.day;

}

#pragma mark Decomposing Dates

- (NSInteger) nearestHour

{

NSTimeIntervalaTimeInterval = [[NSDatedate]timeIntervalSinceReferenceDate] +D_MINUTE*30;

NSDate*newDate = [NSDatedateWithTimeIntervalSinceReferenceDate:aTimeInterval];

NSDateComponents*components = [CURRENT_CALENDARcomponents:NSHourCalendarUnitfromDate:newDate];

returncomponents.hour;

}

- (NSInteger) hour

{

NSDateComponents*components = [CURRENT_CALENDARcomponents:DATE_COMPONENTSfromDate:self];

returncomponents.hour;

}

- (NSInteger) minute

{

NSDateComponents*components = [CURRENT_CALENDARcomponents:DATE_COMPONENTSfromDate:self];

returncomponents.minute;

}

- (NSInteger) seconds

{

NSDateComponents*components = [CURRENT_CALENDARcomponents:DATE_COMPONENTSfromDate:self];

returncomponents.second;

}

- (NSInteger) day

{

NSDateComponents*components = [CURRENT_CALENDARcomponents:DATE_COMPONENTSfromDate:self];

returncomponents.day;

}

- (NSInteger) month

{

NSDateComponents*components = [CURRENT_CALENDARcomponents:DATE_COMPONENTSfromDate:self];

returncomponents.month;

}

- (NSInteger) week

{

NSDateComponents*components = [CURRENT_CALENDARcomponents:DATE_COMPONENTSfromDate:self];

returncomponents.week;

}

- (NSInteger) weekday

{

NSDateComponents*components = [CURRENT_CALENDARcomponents:DATE_COMPONENTSfromDate:self];

returncomponents.weekday;

}

- (NSInteger) nthWeekday// e.g. 2nd Tuesday of the month is 2

{

NSDateComponents*components = [CURRENT_CALENDARcomponents:DATE_COMPONENTSfromDate:self];

returncomponents.weekdayOrdinal;

}

- (NSInteger) year

{

NSDateComponents*components = [CURRENT_CALENDARcomponents:DATE_COMPONENTSfromDate:self];

returncomponents.year;

}

@end

你可能感兴趣的:(iOS 分类收集)