2009-04-23 7 views
20

J'ai un NSDate qui représente une heure spécifique. Le format de cette date est hhmmss. Je veux ajouter une valeur NSInterval (spécifiée en secondes) à cette valeur de temps.ajouter NSTimeInterval à NSDate dans le cacao

Exemple:

NSDate =   123000 
NSTimeInterval = 3600 

Added together = 133000 

Quelle est la meilleure façon de le faire?

Répondre

52

Avez-vous vu le manuel Dates and Times Programming Topics for Cocoa?

Fondamentalement, vous devez convertir votre temps en NSDate. Pour convertir une chaîne en une date, vous utilisez la classe NSDateFormatter ou peut-être NSDateComponents si vous connaissez déjà les heures, minutes et secondes.

Votre NSTimeInterval est juste un double (par exemple, 3600.0).

Ensuite, vous utilisez la méthode dateByAddingTimeInterval de NSDate pour ajouter le nombre de secondes à l'heure.

NSDate* newDate = [oldDate dateByAddingTimeInterval:3600.0]; 

Vous pouvez ensuite utiliser soit NSDateFormatter ou NSDateComponents pour obtenir le nouveau temps de retour à nouveau.

+0

Merci, exactement ce dont j'avais besoin! –

+0

addTimeInterval: obsolète dans iOS 4.0. Utilisez dateByAddingTimeInterval: - http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html –

+0

@SeungUnHam En effet. La réponse a été écrite lorsque l'iPhone OS 2.x était à jour (!), Mais je l'ai mis à jour pour refléter la recommandation actuelle. –

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