2009-04-23 8 views
20

Ich habe eine NSDate, die eine bestimmte Zeit darstellt. Das Format dieses Datums ist hhmmss. Ich möchte einen NSInterval Wert (in Sekunden angegeben) zu diesem Zeitwert hinzufügen.NSTimeInterval zu NSDate in Kakao hinzufügen

Beispiel:

NSDate =   123000 
NSTimeInterval = 3600 

Added together = 133000 

Was ist der beste Weg, dies zu tun?

Antwort

52

Haben Sie das Handbuch Dates and Times Programming Topics for Cocoa gesehen?

Grundsätzlich müssen Sie Ihre Zeit in ein NSDate konvertieren. Um eine Zeichenfolge in ein Datum zu konvertieren, verwenden Sie die Klasse NSDateFormatter oder vielleicht NSDateComponents, wenn Sie die Stunden, Minuten und Sekunden bereits kennen.

Ihr NSTimeInterval ist nur ein Doppel (d. H. 3600,0).

Dann verwenden Sie die Methode dateByAddingTimeInterval von NSDate, um die Anzahl der Sekunden zu der Zeit hinzuzufügen.

NSDate* newDate = [oldDate dateByAddingTimeInterval:3600.0]; 

Sie können dann entweder NSDateFormatter oder NSDateComponents die neue Zeit wieder heraus zu kommen.

+0

Danke, genau das, was ich brauchte! –

+0

addTimeInterval: In iOS 4.0 veraltet. Verwenden Sie dateByAddingTimeInterval: - http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html –

+0

@SeungUnHam Tatsächlich. Die Antwort wurde geschrieben, als iPhone OS 2.x aktuell war (!), Aber ich habe es aktualisiert, um die aktuelle Empfehlung zu reflektieren. –

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