Cómo agregar horas a una NSDate?
-
11-09-2019 - |
Pregunta
Tengo una fecha convertida en un valor doble y se guarda en la base de datos. Ahora, quiero comparar si las horas currentDate > myDataBaseDate + 8
es decir, que quieren obtener 8 horas añadido a myDataBaseDate. Estoy convertir la fecha en valores dobles. Así cómo consigo 8 horas más tarde el tiempo de mi base de datos de fecha de guardado. ¿Cómo comparo
if (currentDateTime > DateFromdatabaseValue + DateByAdding8HoursInDataBase)
Solución
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];
Otros consejos
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)
Usted puede simplemente utilizar:
NSDate *incrementedDate = [NSDate dateWithTimeInterval:numberOfSeconds sinceDate:[NSDate date]];
Usted puede simplemente añadir 8 * 3600 a su valor de base de datos (suponiendo que su valor doble convertida representa segundos).
NSDate * startdate = datePicker.date;
NSTimeInterval secondsInOneHours = 1 * 60 * 60;
NSDate *dateOneHoursAhead = [startdate dateByAddingTimeInterval:secondsInOneHours];
[dateformate setDateFormat:@"d-MMM-yy HH:mm:ss"];
strDate = [dateformate stringFromDate:dateOneHoursAhead];
Swift 3.X Uso simple
let calendar = NSCalendar.autoupdatingCurrent
let newDate = calendar.date(byAdding: .hour, value: 8, to: Date())