Come aggiungere ore per un NSDate?
-
11-09-2019 - |
Domanda
Ho un appuntamento convertito in un valore doppio e salvato nel database. Ora, voglio mettere a confronto se ore currentDate > myDataBaseDate + 8
cioè, voglio ottenere 8 ore aggiunti myDataBaseDate. Sto data di conversione in valori doppi. Allora, come faccio ad avere 8 ore più tardi volta dal mio database di data salvata. Come faccio a confrontare
if (currentDateTime > DateFromdatabaseValue + DateByAdding8HoursInDataBase)
Soluzione
Non sono del tutto sicuro di quello che si sta cercando di fare, ma è possibile creare un oggetto NSDate con l'aggiunta di tempo in secondi a un altro NSDate utilizzando:
- (id)dateByAddingTimeInterval:(NSTimeInterval)seconds
// per esempio. aggiungere 8 ore l'ora corrente:
NSDate *mydate = [NSDate date];
NSTimeInterval secondsInEightHours = 8 * 60 * 60;
NSDate *dateEightHoursAhead = [mydate dateByAddingTimeInterval:secondsInEightHours];
Altri suggerimenti
Dato che iOS 8 c'è il dateByAddingUnit
più conveniente:
//add 8 hours
let calendar = NSCalendar.autoupdatingCurrentCalendar()
newDate = calendar.dateByAddingUnit(.CalendarUnitHour, value: 8, toDate: originalDate, options: nil)
È possibile utilizzare semplicemente:
NSDate *incrementedDate = [NSDate dateWithTimeInterval:numberOfSeconds sinceDate:[NSDate date]];
Si può semplicemente aggiungere 8 * 3600 al valore del database (assumendo che il valore doppio convertito rappresenta i secondi).
* 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 Utilizzo semplice
let calendar = NSCalendar.autoupdatingCurrent
let newDate = calendar.date(byAdding: .hour, value: 8, to: Date())