Home > DeveloperSection > Forums > Modifying NSDate to represent 1 month from today
Glen Martin
Glen Martin

Total Post:27

Posted on    August-31-2015 12:34 AM

 iPhone iPhone  Ios  Objective C 

 1 Reply(s)
 554  View(s)
Rate this:

I'm adding repeating events to a Cocoa app I'm working on. I have repeat every day and week fine because I can define these mathematically (3600*24*7 = 1 week). I use the following code to modify the date:


[NSDate dateWithTimeIntervalSinceNow:(3600*24*7*(weeks))]


I know how many months have passed since the event was repeated but I can't figure out how to make an NSDate object that represents 1 month/3 months/6 months/9 months into the future. Ideally I want the user to say repeat monthly starting Oct. 14 and it will repeat the 14th of every month.

Tarun Kumar

Total Post:210

Posted on    August-31-2015 8:39 AM

Use NSCalender, NSDateComponents and NSDate:

NSDateComponents *components = [[[NSDateComponents alloc] init]

components.month = 1;
NSDate *oneMonthFromNow = [[NSCalendar currentCalendar] dateByAddingComponents:

components toDate:[NSDate date] options:0];

Just set the different properties of components to get different periods of time (e.g. 3 months, 6 months etc).

Note: Depending on the context, you may want to use [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease] instead of [NSCalendar currentCalendar], if by "1 month" you mean "1 month on the Gregorian calendar".

Modified On Aug-31-2015 08:40:19 AM

Don't want to miss updates? Please click the below button!

Follow MindStick