Grundsätzlich, wie der Titel sagt. Ich frage mich, wie ich einen Tag zu einem hinzufügen könnte NSDate
.
Also wenn es wäre:
21st February 2011
Es würde werden:
22nd February 2011
Oder wenn es wäre:
31st December 2011
Es würde werden:
1st January 2012.
objective-c
date
cocoa-touch
nsdate
Andrew
quelle
quelle
Antworten:
Swift 5.0:
Ziel c :
Dies sollte selbsterklärend sein.
quelle
dateByAddingComponents
Aufrufs aufNSCalendarOptions(rawValue: 0)
Seit iOS 8 können Sie verwenden
NSCalendar.dateByAddingUnit
Beispiel in Swift 1.x:
Swift 2.0:
Swift 3.0:
quelle
date.add(.days, 1)
? * geht und baut eine Erweiterungextension Date { func adding(_ component: Calendar.Component, _ value: Int) -> Date? { return Calendar.current.date(byAdding: component, value: value, to: self) } }
NutzungDate().adding(.day, 1) // "Jun 6, 2019 at 5:35 PM"
Aktualisiert für Swift 5
Ziel c
quelle
iOS 8+, OSX 10.9+, Objective-C
quelle
Eine funktionierende Swift 3+ -Implementierung basierend auf der Antwort von highmaintenance und dem Kommentar von vikingosegundo . Diese Datumserweiterung bietet außerdem zusätzliche Optionen zum Ändern von Jahr, Monat und Uhrzeit:
Die Verwendung für das Hinzufügen eines Tages, wie vom OP gefordert, wäre dann:
quelle
let foo = Date().add([.calendar: 1, .yearForWeekOfYear: 3]
ich meiner Antwort die alternative Lösung hinzufügen . Vielen Dank für Ihren Vorschlag, @vikingosegundo!Swift 4.0 (genau wie Swift 3.0 in dieser wunderbaren Antwort , die es nur Neulingen wie mir klar macht)
quelle
Verwenden Sie die folgende Funktion und verwenden Sie den Days-Parameter, um das Datum daysAhead / daysBehind zu erhalten. Übergeben Sie den Parameter einfach als positiv für das zukünftige Datum oder negativ für frühere Daten:
quelle
In kurzer Zeit
quelle
Es ist Arbeit!
quelle
Swift 3.0 sehr einfache Implementierung wäre:
quelle
quelle
Swift 4.0
Verwendungszweck
Hinweis: Wenn Sie nicht wissen, warum die Codezeilen mit einem Ausrufezeichen enden, suchen Sie bei Google nach "Swift Optionals".
quelle
Sie können die Methode von NSDate verwenden,
- (id)dateByAddingTimeInterval:(NSTimeInterval)seconds
woseconds
dies der Fall wäre60 * 60 * 24 = 86400
quelle
In Swift 2.1.1 und xcode 7.1 OSX 10.10.5 können Sie mithilfe der Funktion eine beliebige Anzahl von Tagen vorwärts und rückwärts hinzufügen
Funktionsaufruf zur Erhöhung des aktuellen Datums um 9 Tage
Funktionsaufruf zur Dekrementierung des aktuellen Datums um 80 Tage
quelle
Hier ist eine Allzweckmethode, mit der Sie jede Art von Einheit (Jahr / Monat / Tag / Stunde / Sekunde usw.) zum angegebenen Datum addieren / subtrahieren können.
Verwenden von Swift 2.2
quelle
Ok - ich dachte, das würde für mich funktionieren. Wenn Sie damit jedoch einen Tag zum 31. März 2013 hinzufügen, wird ein Datum zurückgegeben, zu dem nur 23 Stunden hinzugefügt wurden. Es kann durchaus die 24 haben, aber bei der Verwendung in Berechnungen wurden nur 23:00 Stunden hinzugefügt.
Wenn Sie auf den 28. Oktober 2013 vorwärts springen, fügt der Code 25 Stunden hinzu, was zu einer Datums- und Uhrzeitzeit von 2013-10-28 01:00:00 führt.
Um einen Tag hinzuzufügen, habe ich das Ding oben gemacht und Folgendes hinzugefügt:
Kompliziert, hauptsächlich aufgrund der Sommerzeit.
quelle
60*60*24 + 1
wegen Schaltsekunden. Datteln müssen all dies abdecken, und deshalb ist der Umgang mit Kakao bei Datteln wirklich großartig!quelle
In Swift können Sie eine Erweiterung vornehmen, um eine Methode in NSDate hinzuzufügen
Sie können dies als verwenden
quelle
Update für Swift 4:
quelle
für schnelle 2.2:
Hoffe das hilft jemandem!
quelle
Swift 4, wenn Sie wirklich nur eine 24-Stunden-Schicht (60 * 60 * 24 Sekunden) und nicht "1 Kalendertag" benötigen.
Zukunft:
let dayAhead = Date(timeIntervalSinceNow: TimeInterval(86400.0))
Vergangenheit:
let dayAgo = Date(timeIntervalSinceNow: TimeInterval(-86400.0))
quelle
Update für Swift 5
quelle
quelle
Ich hatte das gleiche Problem; Verwenden Sie eine Erweiterung für NSDate:
quelle
Swift 2.0
quelle
In Swift 4 oder Swift 5 können Sie wie folgt verwenden:
Ausgabe:
quelle
String-Erweiterung: String_Date> Datum konvertieren
Datumserweiterung: Datum konvertieren > Zeichenfolge
Datumserweiterung: Get +/- Date
Verwendungszweck:
Referenz: aus mehreren Fragen
Wie füge ich einem NSDate 1 Tag hinzu?
mathematische Funktion, um positive int in negative und negative in positive umzuwandeln?
Konvertieren von NSString in NSDate (und wieder zurück)
quelle
Verwenden Sie folgenden Code:
Wie
ist jetzt veraltet.
quelle