2009-04-23 13 views
20

У меня есть NSDate, который представляет определенное время. Формат этой даты - hhmmss. Я хочу добавить значение NSInterval (указанное в секундах) к этому значению времени.Добавить NSTimeInterval в NSDate в какао

Пример:

NSDate =   123000 
NSTimeInterval = 3600 

Added together = 133000 

Что такое лучший способ сделать это?

ответ

52

Вы видели руководство пользователя Dates and Times Programming Topics for Cocoa?

В основном вам необходимо преобразовать свое время в NSDate. Чтобы преобразовать строку в дату, вы используете класс NSDateFormatter или, возможно, NSDateComponents, если вы уже знаете часы, минуты и секунды.

Ваш NSTimeInterval всего лишь двойной (то есть, 3600,0).

Затем вы используете метод NSDate dateByAddingTimeInterval, чтобы добавить количество секунд к времени.

NSDate* newDate = [oldDate dateByAddingTimeInterval:3600.0]; 

Вы можете использовать либо NSDateFormatter или NSDateComponents, чтобы получить новое время обратно.

+0

Спасибо, именно то, что мне нужно! – 2009-04-23 12:59:12

+0

addTimeInterval: устарел в iOS 4.0. Используйте dateByAddingTimeInterval: - http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html –

+0

@SeungUnHam Действительно. Ответ был написан, когда iPhone OS 2.x был текущим (!), Но я обновил его, чтобы отразить текущую рекомендацию. –

1
// This will set the time when your view appears it will also 
// set the time if you want to retrieve from it. 
-(void)viewDidAppear:(BOOL)animated 
{ 
    //Create todays date 
    NSDate *duedate = [NSDate date]; 
    //Add how ever many days you could write 86400*numbe_of_days days 86400/24 for an hour 
    //Then simply reassign the variable or use a different one. 
    duedate = [duedate dateByAddingTimeInterval:86400]; //I add one day 
    [datePicker setDate:duedate animated:YES]; //Animate yes will show your pickers moving 
    [datePicker setMinimumDate:duedate]; //Set minimum date. 
}