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