Как добавить временной интервал в NSDate? - PullRequest
6 голосов
/ 24 февраля 2010

У меня есть NSDate и продолжительность. Мне нужно получить время после продолжительности

Дано:
Дата: "2010-02-24 12:30:00 -1000"
длительность 3600 секунд

Мне нужно получить "2010-02-24 13:30:00 -1000"

Я думал, что dateWithTimeIntervalSinceReferenceDate:, добьется цели, но теперь я вижу, что это дает смещение даты с 1 января 2001 по Гринвичу.

Есть ли еще одна функция C, которую мне нужно использовать

Ответы [ 5 ]

32 голосов
/ 25 февраля 2010

Как заявляет DyingCactus, вы можете использовать метод addTimeInterval NSDate, но в зависимости от версии ОС создаст предупреждение компилятора, так как он устарел в 10.6 по состоянию на 2009-08-17.

Текущий рекомендуемый метод - использовать dateByAddingTimeInterval для NSDate:

NSDate *newDate = [oldDate dateByAddingTimeInterval:3600];

Обратите внимание, что если вы настроены на 10,5 или более раннюю версию, оригинальный ответ будет работать.

4 голосов
/ 24 февраля 2010

Требуется метод класса dateWithTimeInterval:sinceDate:, который принимает начальную дату и интервал NSDate docs

3 голосов
/ 25 февраля 2010

Вы можете использовать метод экземпляра addTimeInterval NSDate:

NSDate *newDate = [oldDate addTimeInterval:3600];

Редактировать: Как правильно указывает Chip Coons, этот метод устарел. Пожалуйста, используйте вместо этого один из других методов.

1 голос
/ 23 ноября 2016

Для тех, кто ищет версию Swift 3.x:

let newDate = Date.init(timeInterval: 2600, since: oldDate)
0 голосов
/ 16 июля 2014

Вместо использования устаревшего метода addTimeInterval вы можете использовать более новый метод экземпляра dateByAddingTimeInterval NSDate.

NSDate *newDate = [oldDate dateByAddingTimeInterval:2500];
...