user278859
user278859

Reputation: 10519

How to add a time interval to an NSDate?

I have an NSDate and a duration. I need to get the time after the duration

Given:
The date is "2010-02-24 12:30:00 -1000"
duration is 3600 secs

I need to get "2010-02-24 13:30:00 -1000"

I thought dateWithTimeIntervalSinceReferenceDate:, would do the trick but I see now that this gives a date offset from 1 Jan 2001 GMT.

Is there another C function I need to use

Upvotes: 6

Views: 19122

Answers (5)

dannrob
dannrob

Reputation: 1069

For those looking for a Swift 3.x version:

let newDate = Date.init(timeInterval: 2600, since: oldDate)

Upvotes: 1

David
David

Reputation: 1

Instead of using the deprecated addTimeInterval method, you can use the newer dateByAddingTimeInterval instance method of NSDate.

NSDate *newDate = [oldDate dateByAddingTimeInterval:2500];

Upvotes: 0

user121301
user121301

Reputation:

You can use the addTimeInterval instance method of NSDate:

NSDate *newDate = [oldDate addTimeInterval:3600];

Edit: As Chip Coons correctly points out, this method has been deprecated. Please use one of the other methods instead.

Upvotes: 3

mmmmmm
mmmmmm

Reputation: 32661

You want the class method dateWithTimeInterval:sinceDate: which takes the starting date and the interval NSDate docs

Upvotes: 4

Chip Coons
Chip Coons

Reputation: 3201

As DyingCactus states, you can use the addTimeInterval method of NSDate, but depending on the OS version is will create a compiler warning, since it is deprecated in 10.6 as of 2009-08-17.

The current recommended method is to use dateByAddingTimeInterval on NSDate:

NSDate *newDate = [oldDate dateByAddingTimeInterval:3600];

Note that if you are targeting 10.5 or earlier, the original answer will work.

Upvotes: 32

Related Questions