Einführung in die Arbeit mit Datum und Uhrzeit in Swift
Die Arbeit mit Datum und Uhrzeit ist eine der Kernaufgaben bei der Entwicklung von Apps für iOS und macOS. Ob es um die Anzeige des aktuellen Datums, die Berechnung der Differenz zwischen Ereignissen oder die Planung von Benachrichtigungen geht – Swift bietet ein leistungsstarkes und flexibles Toolkit für diese Zwecke. In diesem Artikel werden wir die wichtigsten Klassen und Methoden behandeln: Date, DateFormatter, Calendar, DateComponents und TimeInterval. Sie erfahren, wie Sie Daten in Swift erstellen, formatieren, vergleichen und manipulieren.
Das Material ist sowohl für Anfänger als auch für erfahrene Entwickler nützlich, die ihr Wissen systematisieren möchten. Alle Codebeispiele können sofort in Ihren eigenen Projekten verwendet werden.
Grundlegende Klassen für die Arbeit mit Daten
Die Klasse Date
Date ist der fundamentale Typ, der einen bestimmten Zeitpunkt repräsentiert, unabhängig von Zeitzone oder Kalender. Er speichert die Anzahl der Sekunden, die seit dem 1. Januar 2001 (der Cocoa-Epoche) vergangen sind.
import Foundation
// Aktuelles Datum und Uhrzeitlet now = Date()print("Jetzt: \\(now)")
// Datum in 1 Stundelet oneHourLater = Date(timeIntervalSinceNow: 3600)print("In einer Stunde: \\(oneHourLater)")
// Datum aus einer gegebenen Anzahl von Sekunden seit der Epochelet epochDate = Date(timeIntervalSinceReferenceDate: 0)print("Cocoa-Epoche: \\(epochDate)")TimeInterval
TimeInterval ist lediglich ein Alias für Double und repräsentiert eine Anzahl von Sekunden. Es wird verwendet, um Zeitintervalle anzugeben.
let interval: TimeInterval = 86400 // 24 Stunden in Sekundenlet tomorrow = Date(timeIntervalSinceNow: interval)print("Morgen: \\(tomorrow)")DateFormatter
DateFormatter ist für die Umwandlung eines Datums in einen String und umgekehrt zuständig. Dies ist eine der am häufigsten verwendeten Klassen.
let formatter = DateFormatter()formatter.dateStyle = .longformatter.timeStyle = .short
let currentDate = Date()let dateString = formatter.string(from: currentDate)print("Formatiertes Datum: \\(dateString)")
// Rückumwandlunglet dateFromString = formatter.date(from: "15. April 2025 um 14:30")print("Datum aus String: \\(dateFromString ?? Date())")Sie können ein eigenes Format mit dateFormat festlegen:
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"let customString = formatter.string(from: Date())print("Benutzerdefiniertes Format: \\(customString)")Kalender und Datumskomponenten
Calendar
Calendar ermöglicht die Arbeit mit Daten im Kontext eines bestimmten Kalenders (gregorianisch, islamisch usw.) und einer bestimmten Zeitzone.
let calendar = Calendar.currentlet components = calendar.dateComponents([.year, .month, .day, .hour, .minute], from: Date())print("Jahr: \\(components.year!), Monat: \\(components.month!), Tag: \\(components.day!)")DateComponents
DateComponents ist eine Struktur, die einzelne Datumskomponenten (Jahr, Monat, Tag, Stunde usw.) enthält. Sie wird verwendet, um neue Daten zu erstellen oder Teile aus vorhandenen zu extrahieren.
// Erstellen eines Datums aus Komponentenvar birthdayComponents = DateComponents()birthdayComponents.year = 1990birthdayComponents.month = 6birthdayComponents.day = 15birthdayComponents.hour = 10
if let birthday = calendar.date(from: birthdayComponents) { print("Geburtstag: \\(birthday)")}
// Hinzufügen von Tagen zu einem Datumif let nextWeek = calendar.date(byAdding: .day, value: 7, to: Date()) { print("Nächste Woche: \\(nextWeek)")}Komponenten können verwendet werden, um Eigenschaften eines Datums zu überprüfen:
let isToday = calendar.isDateInToday(Date())print("Heute? \\(isToday)")
let isWeekend = calendar.isDateInWeekend(Date())print("Wochenende? \\(isWeekend)")