2009-04-23 17 views
20

Tengo un NSDate que representa un tiempo específico. El formato de esa fecha es hhmmss. Quiero agregar un valor de NSInterval (especificado en segundos) a ese valor de tiempo.agregar NSTimeInterval a NSDate en cocoa

Ejemplo:

NSDate =   123000 
NSTimeInterval = 3600 

Added together = 133000 

¿Cuál es la mejor manera de hacer esto?

Respuesta

52

¿Has visto el manual de Dates and Times Programming Topics for Cocoa?

Básicamente necesita convertir su tiempo en un NSDate. Para convertir una cadena en una fecha, utilice la clase NSDateFormatter o quizás NSDateComponents si ya conoce las horas, los minutos y los segundos.

Su NSTimeInterval es solo un doble (es decir, 3600.0).

Luego usa el método dateByAddingTimeInterval de NSDate para agregar el número de segundos a la vez.

NSDate* newDate = [oldDate dateByAddingTimeInterval:3600.0]; 

A continuación, puede utilizar cualquiera o NSDateFormatterNSDateComponents para obtener el nuevo tiempo de volver a salir.

+0

¡Gracias, exactamente lo que necesitaba! –

+0

addTimeInterval: obsoleto en iOS 4.0. Use dateByAddingTimeInterval: - http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html –

+0

@SeungUnHam Indeed. La respuesta se escribió cuando iPhone OS 2.x estaba actualizado (!), Pero la actualicé para reflejar la recomendación actual. –

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