Arbeiten mit Datum und Uhrzeit in Swift: Vollständiger Leitfaden

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeiten mit Datum und Uhrzeit in Swift: Von den Grundlagen bis zu fortgeschrittenen Techniken



Das Arbeiten mit Datum und Uhrzeit ist eine der Kernaufgaben bei der Entwicklung von Apps für iOS und macOS. Swift bietet dafür einen leistungsstarken und flexiblen Satz an Werkzeugen: Date, DateFormatter, Calendar, DateComponents und TimeInterval. In diesem Artikel werden wir jedes einzelne davon detailliert besprechen, praktische Beispiele zeigen und lernen, typische Aufgaben zu lösen, wie das Formatieren von Daten, das Berechnen von Zeitdifferenzen, das Arbeiten mit Zeitzonen und Kalendern.



1. Grundlagen: Die Klassen Date und TimeInterval



Der grundlegende Typ zur Darstellung eines Zeitpunkts ist Date. Er speichert die Anzahl der Sekunden, die seit dem 1. Januar 2001, 00:00:00 UTC (dem Referenzdatum für Apple), vergangen sind.



Erstellen und Vergleichen von Daten:

import Foundation

// Aktuelles Datum und Uhrzeitlet now = Date()print("Jetzt: \\(now)")

// Datum basierend auf einem Zeitintervall (120 Sekunden ab dem aktuellen Moment)let futureDate = Date(timeIntervalSinceNow: 120)print("In 2 Minuten: \\(futureDate)")

// Datum basierend auf einem festen Intervall ab dem Referenzdatumlet specificDate = Date(timeIntervalSinceReferenceDate: 3600 * 24 * 365) // 1 Jahr ab 2001print("Ungefähres Datum: \\(specificDate)")

// Vergleich von Datenif now < futureDate { print("Das aktuelle Datum liegt vor dem zukünftigen")}


TimeInterval ist einfach ein Alias für Double, der eine Anzahl von Sekunden darstellt. Es wird verwendet, um die Differenz zwischen Daten zu berechnen:

let startDate = Date()sleep(2) // Simulation einer Verzögerunglet endDate = Date()

let elapsed: TimeInterval = endDate.timeIntervalSince(startDate)print("Es sind \\(elapsed) Sekunden vergangen") // Gibt ~2.0 aus

// Umgekehrte Operationlet minutes: TimeInterval = 5 * 60let fiveMinutesLater = Date(timeInterval: minutes, since: startDate)


2. Formatieren von Daten mit DateFormatter



Um dem Benutzer ein Datum in verständlicher Form anzuzeigen, wird DateFormatter verwendet. Er unterstützt Lokalisierung und viele Stile.



Basis-Formatierung:

let formatter = DateFormatter()formatter.locale = Locale(identifier: "de_DE") // Deutsche Lokalisierungformatter.timeZone = TimeZone.current       // Aktuelle Zeitzone

// Standard-Stileformatter.dateStyle = .fullformatter.timeStyle = .shortprint(formatter.string(from: Date())) // Beispiel: "Freitag, 24. Februar 2025 um 14:30"

formatter.dateStyle = .mediumformatter.timeStyle = .noneprint(formatter.string(from: Date())) // "24.02.2025"


Benutzerdefiniertes Format:

formatter.dateFormat = "dd.MM.yyyy HH:mm"print(formatter.string(from: Date())) // "24.02.2025 14:30"

// Parsen eines Strings in ein Datumlet dateString = "25.12.2024 10:00"if let parsedDate = formatter.date(from: dateString) { print("Geparstes Datum: \\(parsedDate)")}


Wichtig: Überprüfen Sie beim Parsen immer, ob date(from:) nicht nil zurückgibt. Ein falsches String-Format oder eine nicht übereinstimmende Lokalisierung führt zu einem Fehler.



3. Kalenderberechnungen: Calendar und DateComponents



Die Klasse Calendar kapselt Informationen über das Kalendersystem (gregorianisch, islamisch, buddhistisch usw.) und ermöglicht komplexe Operationen mit Daten. DateComponents wird verwendet, um einzelne Komponenten eines Datums (Jahr, Monat, Tag, Stunde usw.) zu beschreiben.



Extrahieren von Komponenten:

let calendar = Calendar.currentlet components = calendar.dateComponents([.year, .month, .day, .weekday], from: Date())

print("Jahr: \\(components.year!)")print("Monat: \\(components.month!)")print("Tag: \\(components.day!)")print("Wochentag: \\(components.weekday!)") // 1 - Sonntag, 2 - Montag...

Blogs

Buchempfehlungen