2009-10-31 12 views
45

Tengo una fecha convertida a doble valor y guardada en la base de datos. Ahora, quiero comparar si currentDate > myDataBaseDate + 8 horas, es decir, quiero agregar 8 horas a myDataBaseDate. Estoy convirtiendo la fecha en valores dobles. Entonces, ¿cómo obtengo 8 horas más tarde la fecha de mi base de datos guardada? ¿Cómo comparo¿Cómo agregar horas a un NSDate?

if (currentDateTime > DateFromdatabaseValue + DateByAdding8HoursInDataBase) 

Respuesta

141

No estoy del todo seguro de lo que está tratando de hacer, pero se puede crear un objeto NSDate mediante la adición de tiempo en segundos a otro NSDate usando:

- (id)dateByAddingTimeInterval:(NSTimeInterval)seconds

// por ejemplo. añadir 8 horas a la hora:

NSDate *mydate = [NSDate date]; 
NSTimeInterval secondsInEightHours = 8 * 60 * 60; 
NSDate *dateEightHoursAhead = [mydate dateByAddingTimeInterval:secondsInEightHours]; 
+3

Evite utilizar este tipo de matemáticas de fecha si la precisión es importante para usted. No puede suponer 60 segundos en un minuto, ni 60 minutos en una hora. NSCalendar existe para abstraer todos los casos de esquina (segundos intercalares, por ejemplo). –

+0

tnks compinche ... la mejor respuesta que encontré – Mehul

+0

@BenPackard ¿cuál es su solución en ese caso? – circuitry

0

Usted puede simplemente añadir 8 * 3600 a su valor de base de datos (suponiendo que su valor doble convertida representa segundos).

0

NSDate * Fecha de inicio = datePicker.date;

NSTimeInterval secondsInOneHours = 1 * 60 * 60; 

    NSDate *dateOneHoursAhead = [startdate dateByAddingTimeInterval:secondsInOneHours]; 

    [dateformate setDateFormat:@"d-MMM-yy HH:mm:ss"]; 

    strDate = [dateformate stringFromDate:dateOneHoursAhead]; 
2

puede simplemente usar:

NSDate *incrementedDate = [NSDate dateWithTimeInterval:numberOfSeconds sinceDate:[NSDate date]]; 
12

Desde iOS 8 no es el más conveniente dateByAddingUnit:

//add 8 hours 
let calendar = NSCalendar.autoupdatingCurrentCalendar() 
newDate = calendar.dateByAddingUnit(.CalendarUnitHour, value: 8, toDate: originalDate, options: nil) 
+3

Esta debería ser la respuesta aceptada, gracias por responder y comentar arriba. – woody121

0

Swift 3.X Uso simple

let calendar = NSCalendar.autoupdatingCurrent 
let newDate = calendar.date(byAdding: .hour, value: 8, to: Date())