Wie ein Zeitintervall zu einem NSDate hinzufügen?
-
22-09-2019 - |
Frage
ich eine NSDate
und eine Dauer. Ich brauche die Zeit nach der Dauer erhalten
Gegeben:
Das Datum ist „2010-02-24 00.30.00 -1000“
Dauer beträgt 3600 Sekunden
Ich brauche zu bekommen "2010-02-24 13.30.00 -1000"
Ich dachte dateWithTimeIntervalSinceReferenceDate:
, würde es tun, aber ich sehe jetzt, dass dies ein Datum von 1. Januar 2001 GMT Offset gibt.
Gibt es eine andere C-Funktion ich verwenden müssen
Lösung
Wie DyingCactus Staaten, können Sie die addTimeInterval Methode von NSDate verwenden können, aber in Abhängigkeit von der Betriebssystem-Version wird eine Compiler-Warnung erstellen, da es sich in 10,6 ab 2009-08-17 veraltet.
Die derzeit empfohlene Methode ist dateByAddingTimeInterval auf NSDate zu verwenden:
NSDate *newDate = [oldDate dateByAddingTimeInterval:3600];
Beachten Sie, dass, wenn Sie 10.5 oder früher Targeting wird die ursprüngliche Antwort arbeiten.
Andere Tipps
Sie möchten die Klassenmethode dateWithTimeInterval:sinceDate:
, die den Beginn und das Intervall dauert NSDate docs
Sie können die addTimeInterval Instanzmethode NSDate verwenden:
NSDate *newDate = [oldDate addTimeInterval:3600];
Edit: Wie Chip Coons zu Recht ausführt, ist diese Methode ist veraltet. Bitte nutzen Sie eine der anderen Methoden statt.
Für die Suche nach einer Swift 3.x-Version:
let newDate = Date.init(timeInterval: 2600, since: oldDate)
Statt der veralteten addTimeInterval Methode verwenden, können Sie die neuere dateByAddingTimeInterval Instanzmethode NSDate verwenden.
NSDate *newDate = [oldDate dateByAddingTimeInterval:2500];