Arbeiten mit Daten in Kotlin: Überblick über Bibliotheken und Werkzeuge
Die Arbeit mit Datum und Uhrzeit ist eine der zentralen Aufgaben in den meisten Anwendungen. In Kotlin, einer modernen Multiplattform-Sprache, gibt es mehrere Möglichkeiten, mit Daten zu arbeiten. In diesem Artikel betrachten wir die wichtigsten Bibliotheken und Werkzeuge, die Ihnen helfen, Daten, Uhrzeiten, Intervalle und Zeitzonen in Ihren Kotlin-Projekten effizient zu verwalten.
1. Standard-Java-Bibliothek: java.time
Da Kotlin vollständig mit Java kompatibel ist, können Sie die leistungsstarke Bibliothek java.time (JSR-310) nutzen, die mit Java 8 eingeführt wurde. Dies ist die empfohlene Methode für Server- und Android-Anwendungen (ab API 26+).
Wichtige Klassen:
LocalDate— Datum ohne Uhrzeit (Jahr, Monat, Tag).LocalTime— Uhrzeit ohne Datum.LocalDateTime— Datum und Uhrzeit ohne Zeitzone.ZonedDateTime— Datum und Uhrzeit mit Zeitzone.Instant— Zeitpunkt in UTC (Maschinenzeit).DurationundPeriod— Zeitintervalle.
Anwendungsbeispiel:
import java.time.*
fun main() { // Aktuelles Datum und Uhrzeit val now = LocalDateTime.now() println("Jetzt: $now")
// Erstellen eines bestimmten Datums val birthDate = LocalDate.of(1990, Month.JUNE, 15) println("Geburtsdatum: $birthDate")
// Arbeiten mit Zeitzonen val zonedDateTime = ZonedDateTime.now(ZoneId.of("Europe/Moscow")) println("Zeit in Moskau: $zonedDateTime")
// Differenz zwischen Daten val from = LocalDate.of(2023, 1, 1) val to = LocalDate.now() val daysBetween = ChronoUnit.DAYS.between(from, to) println("Tage seit Neujahr: $daysBetween")
// Formatierung val formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm") println("Formatierte Datum: ${now.format(formatter)}")}Vorteile: integriert, zuverlässig, vollständige Unterstützung aller Funktionen.
Nachteile: wird auf älteren Android-Geräten (vor API 26) ohne Desugaring nicht unterstützt.
2. kotlinx-datetime (Multiplattform-Bibliothek von JetBrains)
Für Multiplattform-Projekte (KMP) hat JetBrains die Bibliothek kotlinx-datetime erstellt. Sie bietet eine einheitliche API für alle Plattformen (JVM, Native, JS).
Wichtige Klassen:
Instant— Zeitpunkt in UTC.LocalDateTime— Datum+Uhrzeit ohne Zeitzone.LocalDateundLocalTime.DateTimePeriodundDatePeriod— Intervalle.TimeZone— Zeitzone.
Anwendungsbeispiel:
import kotlinx.datetime.*
fun main() { // Aktueller Zeitpunkt val now = Clock.System.now() println("Aktuelle UTC: $now")
// Umwandlung in lokale Zeit val localDateTime = now.toLocalDateTime(TimeZone.currentSystemDefault()) println("Lokale Zeit: $localDateTime")
// Erstellen eines Datums val date = LocalDate(2024, 12, 25) println("Datum: $date")
// Differenz zwischen Daten val start = LocalDateTime(2024, 1, 1, 0, 0) val end = LocalDateTime(2024, 12, 31, 23, 59) val period = start.periodUntil(end, DateTimeUnit.DAY) println("Tage dazwischen: $period")
// Formatierung (erfordert separate Bibliothek oder manuell) println("Jahr: ${localDateTime.year}, Monat: ${localDateTime.monthNumber}")}Vorteile: Multiplattform-Fähigkeit, Leichtgewichtigkeit, offizielle Unterstützung.
Nachteile: eingeschränkte Formatierungsmöglichkeiten (kein integrierter DateTimeFormatter).
Auch in der Bibliothek
Arbeiten mit CSV in JavaScript (Node.js): Bibliotheken, Parsing und Datengenerierung
Arbeiten mit XML in Swift: Parsen, Erstellen und Verarbeiten von Daten (iOS/macOS)
Arbeit mit YAML in Java: Bibliotheken SnakeYAML und Jackson