Skip to content

Instantly share code, notes, and snippets.

@vickeryj
Created March 31, 2010 18:48
Show Gist options
  • Save vickeryj/350711 to your computer and use it in GitHub Desktop.
Save vickeryj/350711 to your computer and use it in GitHub Desktop.
@implementation NSDate (PKDateUtils)
+ (NSDate *)dateAtMidnightWithDaysAgo:(int)numDaysAgo
{
NSDate *today = [NSDate date];
NSCalendar *gregorianCal = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDateComponents *todayComponents = [gregorianCal components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:today];
todayComponents.day -= numDaysAgo;
todayComponents.hour = 0;
todayComponents.minute = 0;
return [gregorianCal dateFromComponents:todayComponents];
}
+ (NSDate *)dateWithTotalCrossString:(NSString *)totalCrossString {
if ([@"0" isEqualToString:totalCrossString]) {
return nil;
}
else {
return [[DataFormatter sharedDataFormatter] dateForValue:totalCrossString];
}
}
- (NSDate *)dateAtMidnight {
NSCalendar *gregorianCal = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDateComponents *components = [gregorianCal components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:self];
components.hour = 0;
components.minute = 0;
return [gregorianCal dateFromComponents:components];
}
- (NSString *)toTotalCrossFormat {
return [[DataFormatter sharedDataFormatter] formatDate:self format:FORMAT_TOTAL_CROSS];
}
- (NSInteger)numDaysAgo {
NSCalendar *gregorianCal = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDateComponents *components = [gregorianCal components:NSDayCalendarUnit fromDate:[self dateAtMidnight] toDate:[NSDate dateAtMidnightWithDaysAgo:0] options:0];
return components.day;
}
- (NSDate *)dateByAddingDays:(NSInteger)numDays {
NSCalendar *gregorianCal = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDateComponents *components = [gregorianCal components:NSYearCalendarUnit | NSMonthCalendarUnit |
NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit
fromDate:self];
components.day += numDays;
return [gregorianCal dateFromComponents:components];
}
- (NSInteger)daysSince:(NSDate *)pastDate {
NSCalendar *gregorianCal = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDateComponents *components = [gregorianCal components:NSDayCalendarUnit fromDate:[pastDate dateAtMidnight] toDate:[self dateAtMidnight] options:0];
return components.day;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment