Skip to content

Instantly share code, notes, and snippets.

@MosheBerman
Created November 27, 2012 01:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MosheBerman/4151858 to your computer and use it in GitHub Desktop.
Save MosheBerman/4151858 to your computer and use it in GitHub Desktop.
A header for an NSDate category.
#import <Foundation/Foundation.h>
@interface NSDate (timeTravel)
- (NSDate *) dateAdvancedByNumberOfDaysAgainstGregorianCalendar:(NSUInteger)numberOfDays;
- (NSDate *) dateRewoundByNumberOfDaysAgainstGregorianCalendar:(NSUInteger)numberOfDays;
- (NSDate *) dateAdvancedByNumberOfDays:(NSUInteger)numberOfDays againstCalendar:(NSCalendar *)calendar;
- (NSDate *) dateRewoundByNumberOfDays:(NSUInteger)numberOfDays againstCalendar:(NSCalendar *)calendar;
@end
#import "NSDate+timeTravel.h"
@implementation NSDate (timeTravel)
- (NSDate *) dateAdvancedByNumberOfDaysAgainstGregorianCalendar:(NSUInteger)numberOfDays {
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
return [self dateAdvancedByNumberOfDays:numberOfDays againstCalendar:gregorianCalendar];
}
- (NSDate *) dateRewoundByNumberOfDaysAgainstGregorianCalendar:(NSUInteger)numberOfDays {
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
return [self dateRewoundByNumberOfDays:numberOfDays againstCalendar:gregorianCalendar];
}
- (NSDate *) dateAdvancedByNumberOfDays:(NSUInteger)numberOfDays againstCalendar:(NSCalendar *)calendar{
NSUInteger componentFlags = NSEraCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *components = [calendar components:componentFlags fromDate:self];
[components setDay:[components day] + numberOfDays];
return [calendar dateFromComponents:components];
}
- (NSDate *) dateRewoundByNumberOfDays:(NSUInteger)numberOfDays againstCalendar:(NSCalendar *)calendar{
NSUInteger componentFlags = NSEraCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *components = [calendar components:componentFlags fromDate:self];
[components setDay:[components day] - numberOfDays];
return [calendar dateFromComponents:components];
}
@end
@MosheBerman
Copy link
Author

import "NSDate+timeTravel.h"

@implementation NSDate (timeTravel)

  • (NSDate *) dateAdvancedByNumberOfDaysAgainstGregorianCalendar:(NSUInteger)numberOfDays {

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

    return [self dateAdvancedByNumberOfDays:numberOfDays againstCalendar:gregorianCalendar];
    }

  • (NSDate *) dateRewoundByNumberOfDaysAgainstGregorianCalendar:(NSUInteger)numberOfDays {

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

    return [self dateRewoundByNumberOfDays:numberOfDays againstCalendar:gregorianCalendar];
    }

  • (NSDate *) dateAdvancedByNumberOfDays:(NSUInteger)numberOfDays againstCalendar:(NSCalendar *)calendar{

    NSUInteger componentFlags = NSEraCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;

    NSDateComponents *components = [calendar components:componentFlags fromDate:self];

    [components setDay:[components day] + numberOfDays];

    return [calendar dateFromComponents:components];
    }

  • (NSDate *) dateRewoundByNumberOfDays:(NSUInteger)numberOfDays againstCalendar:(NSCalendar *)calendar{

    NSUInteger componentFlags = NSEraCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;

    NSDateComponents *components = [calendar components:componentFlags fromDate:self];

    [components setDay:[components day] - numberOfDays];

    return [calendar dateFromComponents:components];
    }

@EnD

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment