Berechnung eines zukünftigen oder vergangenen Datums
Swift:
Berechnung eines zukünftigen oder vergangenen Datums
How to:
Swift bietet das Date
und Calendar
Framework für Datumsberechnungen. Hier ein paar Beispiele:
import Foundation
// Heutiges Datum erhalten
let heute = Date()
// Kalender instanziieren
var kalender = Calendar.current
// 5 Tage in die Zukunft reisen
if let zukunft = kalender.date(byAdding: .day, value: 5, to: heute) {
print("In 5 Tagen ist es \(zukunft).")
}
// 3 Wochen in die Vergangenheit gehen
if let vergangenheit = kalender.date(byAdding: .weekOfYear, value: -3, to: heute) {
print("Vor 3 Wochen war es \(vergangenheit).")
}
// Ausgabe
// In 5 Tagen ist es <Zukünftiges Datum>.
// Vor 3 Wochen war es <Vergangenes Datum>.
Deep Dive
Berechnungen mit Daten sind nich neu. Historisch wurden Kalendersysteme angepasst, um präzisere Zeitberechnungen zu erlauben – denken wir an die Gregorianische Kalenderreform. In der Programmierung haben wir es einfacher. Statt astronomische Tabellen zu wälzen, nutzen wir Frameworks. DateComponents
bietet eine Alternative zu date(byAdding:value:to:)
. Es lässt uns spezifischere Anforderungen stellen:
let komponenten = DateComponents(year: 1, month: 2, day: 3)
if let zukunftigesDatum = kalender.date(byAdding: komponenten, to: heute) {
print("In einem Jahr, zwei Monaten und drei Tagen ist es \(zukunftigesDatum).")
}
Beim Implementieren solltest du Zeitzonen und lokale Kalendereinstellungen beachten. Calendar.current
bezieht sich auf die Systemeinstellungen des Users.
See Also
DateComponents
undCalendar
Dokumentation: Date and Time Programming Guide for Cocoa