Arbeiten mit Daten in Kotlin: Überblick über Bibliotheken und Werkzeuge
Die Verarbeitung von Datum und Uhrzeit ist eine der Kernaufgaben in jeder Anwendung: von der Ereignisprotokollierung über die Berechnung von Fristen bis hin zur Anzeige von Kalendern. In Kotlin, einer Sprache, die auf der JVM läuft (und auch Multiplattform-Projekte unterstützt), stehen dem Entwickler mehrere leistungsstarke Bibliotheken zur Verfügung. In diesem Artikel betrachten wir drei Hauptansätze: kotlinx-datetime (empfohlen für Multiplattform), java.time (für JVM/Android) und Joda-Time (legendäre Bibliothek, relevant für alte Projekte).
1. kotlinx-datetime — offizielle Multiplattform-Bibliothek
kotlinx-datetime ist eine moderne Bibliothek von JetBrains, die speziell für Kotlin Multiplatform entwickelt wurde. Sie bietet eine einheitliche API für die Arbeit mit Datum, Uhrzeit, Zeitzonen und Dauern auf allen Plattformen (JVM, JS, Native).
Installation (Gradle)
dependencies { implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.6.1")}Hauptklassen und Beispiele
Instant— Zeitpunkt (UTC).LocalDateTime— Datum+Uhrzeit ohne Zeitzone.LocalDate— nur Datum.LocalTime— nur Uhrzeit.TimeZone— Zeitzone.
import kotlinx.datetime.*
fun main() { // Aktueller Zeitpunkt in UTC val now: Instant = Clock.System.now() println("Now UTC: $now")
// Konvertierung in lokale Zeit (systemische Zeitzone) val localDateTime: LocalDateTime = now.toLocalDateTime(TimeZone.currentSystemDefault()) println("Local: $localDateTime")
// Arbeiten mit Daten val today: LocalDate = localDateTime.date val tomorrow: LocalDate = today.plus(1, DateTimeUnit.DAY) println("Tomorrow: $tomorrow")
// Differenz zwischen Daten val daysBetween = tomorrow.daysUntil(today) println("Days between: $daysBetween") // -1
// Parsen eines Strings val parsedDate = LocalDate.parse("2025-03-15") println("Parsed: $parsedDate")}2. java.time (ThreeTen-Backport) — Standard für JVM und Android
Seit Java 8 ist das Paket java.time (JSR-310) Teil der Standardbibliothek. Für Android API < 26 wird ThreeTen-Backport (oder ThreeTenABP für Android) verwendet. Kotlin ist vollständig kompatibel mit dieser API.
Installation (für Android mit minSdk < 26)
dependencies { implementation("org.threeten:threetenbp:1.6.9")}Beispiele
import java.time.*
fun main() { // Aktuelles Datum und Uhrzeit val now = LocalDateTime.now() println("Now: $now")
// Erstellen eines bestimmten Datums val date = LocalDate.of(2025, Month.DECEMBER, 25) println("Christmas: $date")
// Formatierung val formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm") val formatted = now.format(formatter) println("Formatted: $formatted")
// Differenz zwischen Daten val start = LocalDate.of(2025, 1, 1) val end = LocalDate.of(2025, 12, 31) val days = ChronoUnit.DAYS.between(start, end) println("Days in 2025: $days") // 364}3. Joda-Time — bewährte Bibliothek
Joda-Time war der De-facto-Standard vor dem Erscheinen von java.time. Heute wird sie hauptsächlich in Legacy-Projekten verwendet. Die Bibliothek bietet umfangreiche Funktionen, gilt aber als veraltet — es wird empfohlen, auf java.time oder kotlinx-datetime zu migrieren.
Installation
dependencies { implementation("joda-time:joda-time:2.12.7")}Beispiel
import org.joda.time.*import org.joda.time.format.DateTimeFormat
fun main() { val now = DateTime.now() println("Now: $now")
// Bei Auch in der Bibliothek
Autorisierung und Authentifizierung in C# (.NET): Vollständiger Leitfaden
AVFoundation für Swift: Das komplette Tutorial mit Beispielen
Geolokalisierung und Karten in C# (.NET): Bibliotheken, Beispiele und Empfehlungen