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

È stato utile?

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];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top