Arbeiten mit Daten in Swift (iOS/macOS): Überblick über Bibliotheken und Werkzeuge
Im Apple-Ökosystem wird die Arbeit mit Datum und Uhrzeit traditionell über das Framework Foundation realisiert. Für komplexe Szenarien (Parsen nicht standardisierter Formate, Arbeit mit relativen Daten, Manipulationen in verschiedenen Zeitzonen) greifen Entwickler jedoch häufig auf Drittanbieter-Bibliotheken zurück. In diesem Artikel betrachten wir sowohl die integrierten Möglichkeiten von Swift als auch beliebte Werkzeuge zur Datumsverarbeitung.
1. Integrierte Mittel von Foundation (Date, DateFormatter, Calendar)
Der grundlegende Typ für die Arbeit mit Daten ist die Struktur Date. Sie stellt einen absoluten Zeitpunkt dar (Anzahl der Sekunden seit dem 1. Januar 2001). Für die Formatierung wird DateFormatter und für Kalenderberechnungen Calendar verwendet.
import Foundation
// Aktuelles Datum abrufenlet now = Date()print("Aktuelles Datum: \\(now)")
// Datum formatierenlet formatter = DateFormatter()formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"formatter.timeZone = TimeZone(identifier: "Europe/Moscow")let formattedDate = formatter.string(from: now)print("Formatiertes Datum: \\(formattedDate)")
// String in Datum parsenlet dateString = "2025-03-15 14:30:00"if let parsedDate = formatter.date(from: dateString) { print("Geparstes Datum: \\(parsedDate)")}
// Kalenderberechnungenlet calendar = Calendar.currentlet tomorrow = calendar.date(byAdding: .day, value: 1, to: now)!print("Morgen: \\(tomorrow)")2. SwiftDate — eine leistungsstarke Bibliothek für die Arbeit mit Daten
SwiftDate ist die beliebteste Drittanbieter-Bibliothek für Swift. Sie erweitert die Möglichkeiten von Foundation um:
- Bequeme Syntax zum Erstellen von Daten (z. B.
DateInRegion) - Arbeit mit relativen Daten ("vor 2 Stunden", "in 3 Tagen")
- Unterstützung aller Zeitzonen und Kalender
- Parsen von Strings in beliebigen Formaten
import SwiftDate
// Datum in einer Region erstellenlet region = Region(calendar: Calendars.gregorian, zone: Zones.europeMoscow, locale: Locales.russian)let date = DateInRegion("2025-03-15 14:30:00", format: "yyyy-MM-dd HH:mm:ss", region: region)!print("Datum in der Region: \\(date)")
// Relative Zeitlet now = DateInRegion()let twoHoursAgo = now - 2.hoursprint("Vor 2 Stunden: \\(twoHoursAgo.toRelative())") // "vor 2 Stunden"
// Differenz zwischen Datenlet later = now + 5.dayslet difference = later - nowprint("Differenz: \\(difference.days) Tage")
// Umrechnung in eine andere Zeitzonelet newYorkRegion = Region(zone: Zones.americaNewYork)let dateInNY = date.convert(to: newYorkRegion)print("In New York: \\(dateInNY)")3. TimeInterval und Arbeit mit Zeitintervallen
TimeInterval ist ein Datentyp in Swift, der die Anzahl der Sekunden darstellt. Er wird häufig zur Messung von Zeitabständen und Verzögerungen verwendet.
import Foundation
// Intervall erstellenlet oneHour: TimeInterval = 3600let twoDays: TimeInterval = 2 * 24 * 3600
// Ausführungszeit messenlet start = Date()// Simulation einer langwierigen Operationsleep(2)let end = Date()let elapsed = end.timeIntervalSince(start)print("Vergangen: \\(elapsed) Sekunden")
// Verwendung mit DispatchQueueDispatchQueue.main.asyncAfter(deadline: .now() + oneHour) { print("Eine Stunde ist vergangen")}4. ISO8601DateFormatter — Arbeit mit internationalen Formaten
Für die Arbeit mit Daten im ISO-8601-Format (häufig in APIs verwendet) bietet Apple die spezialisierte Klasse ISO8601DateFormatter an.
import Foundation
let isoFormatter = ISO8601DateFormatter()isoFormatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds]
// ISO-String parsenlet isoString = "2025-03-15T14:30:00.000Z"if let date = Auch in der Bibliothek
Arbeiten mit ZIP-Archiven in Java: vollständige Anleitung zu java.util.zip
Swagger/OpenAPI-Generierung für C# (.NET): Swashbuckle und NSwag
GraphQL auf Node.js: Vollständiger Leitfaden zur Bibliothek graphql-http
Konfiguration von Go-Anwendungen (Golang): Bibliotheken und Werkzeuge
Aufgabenwarteschlangen in Swift: GCD, OperationQueue und Swift Concurrency