| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- /*
- Erica Sadun, http://ericasadun.com
- iPhone Developer's Cookbook 3.x and beyond
- BSD License, Use at your own risk
- */
- #import <Foundation/Foundation.h>
- #define D_SECOND 1
- #define D_MINUTE 60
- #define D_HOUR 3600
- #define D_DAY 86400
- #define D_WEEK 604800
- #define D_YEAR 31556926
- @interface NSDate (Utilities)
- + (NSCalendar *) currentCalendar; // avoid bottlenecks
- + (NSDate *)systemDate;
- // 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;
- // Short string utilities
- - (NSString *) stringWithDateStyle: (NSDateFormatterStyle) dateStyle timeStyle: (NSDateFormatterStyle) timeStyle;
- - (NSString *) stringWithFormat: (NSString *) format;
- @property (nonatomic, readonly) NSString *shortString;
- @property (nonatomic, readonly) NSString *shortDateString;
- @property (nonatomic, readonly) NSString *shortTimeString;
- @property (nonatomic, readonly) NSString *mediumString;
- @property (nonatomic, readonly) NSString *mediumDateString;
- @property (nonatomic, readonly) NSString *mediumTimeString;
- @property (nonatomic, readonly) NSString *longString;
- @property (nonatomic, readonly) NSString *longDateString;
- @property (nonatomic, readonly) NSString *longTimeString;
- // 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) isNextMonth;
- - (BOOL) isLastMonth;
- - (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 *) dateByAddingYears: (NSInteger) dYears;
- - (NSDate *) dateBySubtractingYears: (NSInteger) dYears;
- - (NSDate *) dateByAddingMonths: (NSInteger) dMonths;
- - (NSDate *) dateBySubtractingMonths: (NSInteger) dMonths;
- - (NSDate *) dateByAddingDays: (NSInteger) dDays;
- - (NSDate *) dateBySubtractingDays: (NSInteger) dDays;
- - (NSDate *) dateByAddingHours: (NSInteger) dHours;
- - (NSDate *) dateBySubtractingHours: (NSInteger) dHours;
- - (NSDate *) dateByAddingMinutes: (NSInteger) dMinutes;
- - (NSDate *) dateBySubtractingMinutes: (NSInteger) dMinutes;
- // Date extremes
- - (NSDate *) dateAtStartOfDay;
- - (NSDate *) dateAtEndOfDay;
- // Retrieving intervals
- - (NSInteger) secondsAfterDate: (NSDate *) aDate;
- - (NSInteger) secondsBeforeDate: (NSDate *) aDate;
- - (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) NSInteger nearestHour;
- @property (readonly) NSInteger hour;
- @property (readonly) NSInteger minute;
- @property (readonly) NSInteger seconds;
- @property (readonly) NSInteger day;
- @property (readonly) NSInteger month;
- @property (readonly) NSInteger week;
- @property (readonly) NSInteger weekday;
- @property (readonly) NSInteger nthWeekday; // e.g. 2nd Tuesday of the month == 2
- @property (readonly) NSInteger year;
- - (NSDateComponents*)dsDayWithCalendar:(NSCalendar*)calendar;
- - (NSDateComponents*)dsMonthWithCalendar:(NSCalendar*)calendar;
- - (NSDateComponents*)dsMonth;
- @end
|