2009-04-23 17 views
20

Belirli bir zamanı temsil eden bir NSDate var. Bu tarihin biçimi hhmms'dir. Bu zaman değerine NSInterval değerini (saniye cinsinden belirtilir) eklemek istiyorum.kakaya NSDate için NSTimeInterval ekleyin

Örnek:

NSDate =   123000 
NSTimeInterval = 3600 

Added together = 133000 

Bunu yapmanın en iyi yolu nedir?

cevap

52

Dates and Times Programming Topics for Cocoa kılavuzunu gördünüz mü? Temel olarak zamanınızı bir NSDate'e dönüştürmeniz gerekir. Bir dizeyi bir tarihe dönüştürmek için saat, dakika ve saniye olduğunu biliyorsanız NSDateFormatter sınıfını veya belki NSDateComponents'u kullanın.

Sizin NSTimeInterval, yalnızca bir çift (yani, 3600.0) 'dir.

Ardından, süreyi saniye olarak eklemek için NSDate öğesinin dateByAddingTimeInterval yöntemini kullanırsınız.

NSDate* newDate = [oldDate dateByAddingTimeInterval:3600.0]; 

Ardından NSDateFormatter veya NSDateComponents ya tekrar dışarı yeni saati almak için kullanabilirsiniz.

+0

Teşekkürler, tam olarak ihtiyacım olan şey! –

+0

addTimeInterval: iOS 4.0'da kullanımdan kaldırıldı. DateByAddingTimeInterval öğesini kullanın: - http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html –

+0

@SeungUnHam Gerçekten. Cevap, iPhone OS 2.x'in geçerli olduğu (!) Olduğunda yazıldı, ancak mevcut öneriyi yansıtacak şekilde güncelledim. –

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. 
}