Arbeiten mit Daten in Swift: Foundation, SwiftDate, DateTools (iOS/macOS)

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 Daten in Swift (iOS/macOS): Überblick über Bibliotheken



In der Entwicklung für iOS und macOS ist die Arbeit mit Daten und Zeiten eine der Kernaufgaben. Das Standard-Framework Foundation bietet leistungsstarke, aber manchmal umständliche Werkzeuge. Zur Vereinfachung des Codes und zur Verbesserung der Lesbarkeit verwenden Entwickler oft Drittanbieter-Bibliotheken. In diesem Artikel betrachten wir die nativen Möglichkeiten von Swift (Foundation) und zwei beliebte Bibliotheken: SwiftDate und DateTools.



1. Foundation: integrierte Möglichkeiten



Die grundlegende Toolbox von Foundation umfasst Date, DateFormatter, Calendar und TimeZone. Dies reicht für die meisten Aufgaben aus, erfordert jedoch ausführlichen Code.



Beispiel: Erstellen und Formatieren eines Datums

import Foundation

let now = Date()let formatter = DateFormatter()formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"formatter.timeZone = TimeZone(abbreviation: "UTC")let dateString = formatter.string(from: now)print(dateString) // 2025-04-01 14:30:00


Beispiel: Berechnung der Differenz zwischen Daten

let startDate = Date()let endDate = Calendar.current.date(byAdding: .day, value: 7, to: startDate)!let components = Calendar.current.dateComponents([.day, .hour], from: startDate, to: endDate)print("\\(components.day!) Tage, \\(components.hour!) Stunden")


Vorteile von Foundation: keine Abhängigkeiten, vollständige Kontrolle, Unterstützung aller Zeitzonen und Kalender.
Nachteile: viel Code für einfache Operationen, Komplexität bei Lokalisierung und relativen Daten.



2. SwiftDate — eine leistungsstarke und flexible Bibliothek



SwiftDate ist eine der beliebtesten Bibliotheken für die Arbeit mit Daten in Swift. Sie erweitert die Möglichkeiten von Foundation um praktische Methoden zum Parsen, Formatieren, Manipulieren und Arbeiten mit Zeitzonen.



Installation (Swift Package Manager)

// Package.swiftdependencies: [    .package(url: "https://github.com/malcommac/SwiftDate.git", from: "6.3.0")]


Beispiel: Erstellen eines Datums aus einem String

import SwiftDate

let date = "2025-04-01T14:30:00+0000".toDate()print(date?.toFormat("dd.MM.yyyy HH:mm")) // 01.04.2025 14:30


Beispiel: Relative Daten und Intervalle

let now = Date()let oneWeekAgo = now - 1.weeksprint(oneWeekAgo.toRelative()) // "1 week ago"

let nextMonth = now + 1.monthsprint(nextMonth.toFormat("MMMM yyyy")) // May 2025


Beispiel: Arbeiten mit Zeitzonen

let parisDate = DateInRegion(Date(), region: .init(calendar: Calendars.gregorian, zone: Zones.europeParis, locale: Locales.french))print(parisDate.toFormat("HH:mm")) // Zeit in Paris


Vorteile von SwiftDate: prägnante Syntax, integrierte Unterstützung für relative Daten, Regionen und Locales, leistungsstarkes Parsing.
Nachteile: große Bibliotheksgröße (~2 MB), kann für einfache Projekte überdimensioniert sein.



3. DateTools — Einfachheit und Lesbarkeit



DateTools ist eine leichtgewichtige Bibliothek, die auf die Lesbarkeit des Codes ausgerichtet ist. Sie fügt Date Methoden zur schnellen Berechnung von Intervallen, zum Vergleich und zur Formatierung hinzu.



Installation (CocoaPods)

pod 'DateToolsSwift'


Beispiel: Überprüfung von Zeitintervallen

import DateToolsSwift

let date1 = Date()let date2 = date1 + 2.hoursprint(date2.isToday) // trueprint(date1.earlierDate(date2) == date1) // true


Beispiel: Menschenlesbare Zeichenketten

let pastDate = Date() - 3.daysprint(pastDate.timeAgoSinceNow) // "3 days ago"

let futureDate = Date() + 1.weeksprint(futureDate.timeAgoSinceNow) // "in 1 w

Empfehlungen