Come aggiungere un intervallo di tempo a un NSDate?
-
22-09-2019 - |
Domanda
ho un NSDate
e una durata.Ho bisogno di ottenere il tempo dopo la durata
Dato:
La data è "2010-02-24 12:30:00 -1000"
la durata è di 3600 secondi
Devo ottenere "2010-02-24 13:30:00 -1000"
ho pensato dateWithTimeIntervalSinceReferenceDate:
, andrebbe bene, ma ora vedo che questo dà una data spostata dal 1 gennaio 2001 GMT.
C'è un'altra funzione C che devo usare
Soluzione
Come afferma DyingCactus, è possibile utilizzare il metodo addTimeInterval di NSDate, ma a seconda della versione del sistema operativo verrà creato un avviso del compilatore, poiché è deprecato nella versione 10.6 a partire dal 17/08/2009.
Il metodo attualmente consigliato consiste nell'utilizzare dateByAddingTimeInterval su NSDate:
NSDate *newDate = [oldDate dateByAddingTimeInterval:3600];
Tieni presente che se hai come target la versione 10.5 o precedente, la risposta originale funzionerà.
Altri suggerimenti
Vuoi il metodo class dateWithTimeInterval:sinceDate:
che accetta la data di inizio e l'intervallo Documenti NSDate
Puoi utilizzare il metodo di istanza addTimeInterval di NSDate:
NSDate *newDate = [oldDate addTimeInterval:3600];
Modificare:Come sottolinea correttamente Chip Coons, questo metodo è stato deprecato.Utilizza invece uno degli altri metodi.
Per chi cerca una versione Swift 3.x:
let newDate = Date.init(timeInterval: 2600, since: oldDate)
Invece di utilizzare il metodo obsoleto addTimeInterval, puoi utilizzare il nuovo metodo di istanza dateByAddingTimeInterval di NSDate.
NSDate *newDate = [oldDate dateByAddingTimeInterval:2500];