kotlinx-datetime für Kotlin: komplettes Tutorial mit Beispielen

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

kotlinx-datetime: Multiplattform-Datum und -Zeit in Kotlin

1. Was ist kotlinx-datetime und warum braucht man es?

kotlinx-datetime ist die offizielle Bibliothek von JetBrains für die Arbeit mit Datum und Zeit im Kotlin-Ökosystem. Ihr Hauptmerkmal ist die Multiplattform-Fähigkeit: Derselbe Code läuft auf JVM, JS (im Browser und Node.js), Native (iOS, macOS, Windows, Linux) und Wasm. Das erspart Entwicklern, plattformabhängige Wrapper zu schreiben oder verschiedene Bibliotheken für verschiedene Zwecke zu verwenden.

Warum wird sie benötigt? Die Standardbibliothek von Kotlin/JVM verwendet java.time, das auf anderen Plattformen nicht verfügbar ist. Für Kotlin/Native und Kotlin/JS musste man entweder plattformspezifische APIs (NSDate, Date) nutzen oder externe Bibliotheken einbinden. kotlinx-datetime löst dieses Problem, indem es eine einheitliche API bereitstellt, die auf der ISO-8601-Spezifikation basiert. Sie enthält Klassen für Zeitpunkte (Instant), Datumsangaben ohne Uhrzeit (LocalDate), Uhrzeiten ohne Datum (LocalTime), Datum mit Uhrzeit (LocalDateTime), Zeitzonen (TimeZone) und Zeiträume (DateTimePeriod).

Die Bibliothek ist ideal für Projekte, die Kotlin Multiplatform (KMP) nutzen, für Serveranwendungen mit Ktor, Android-Apps (als Ersatz für java.time) und sogar für Skripte und Konsolen-Dienstprogramme. Sie ist leichtgewichtig, hat keine externen Abhängigkeiten und wird aktiv von der Community unterstützt.

2. Installation

Die Bibliothek wird über Maven Central verteilt. Um sie einzubinden, muss eine Abhängigkeit in die Datei build.gradle.kts (oder build.gradle) eingefügt werden. Nachfolgend der genaue Code für Gradle Kotlin DSL.

// build.gradle.kts
repositories {
    mavenCentral()
}

dependencies {
    // Hauptbibliothek
    implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.6.1")

    // Bei einem Multiplattform-Projekt fügen Sie die Abhängigkeit in commonMain ein:
    // commonMain.dependencies {
    //     implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.6.1")
    // }
}

Wichtig: Version 0.6.1 ist die zum Zeitpunkt der Erstellung dieses Artikels aktuellste stabile Version. Überprüfen Sie die aktuelle Version auf den GitHub-Releases. Für Gradle Groovy DSL ist der Befehl identisch, jedoch ohne Anführungszeichen um die Strings.

Wenn Sie Maven verwenden, fügen Sie Folgendes in Ihre pom.xml ein:

<dependency>
    <groupId>org.jetbrains.kotlinx</groupId>
    <artifactId>kotlinx-datetime</artifactId>
    <version>0.6.1</version>
</dependency>

Für Gradle Kotlin DSL in einem Multiplattform-Projekt (KMP) fügen Sie die Abhängigkeit in commonMain ein:

kotlin {
    sourceSets {
        commonMain.dependencies {
            implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.6.1")
        }
    }
}

3. Schnellstart

Ein minimales funktionsfähiges Beispiel: Erstellen des aktuellen Zeitpunkts, Formatieren und Ausgabe auf der Konsole.

import kotlinx.datetime.*

fun main() {
    // Aktuellen Zeitpunkt in UTC abrufen
    val now: Instant = Clock.System.now()
    println("Aktueller Zeitpunkt in UTC: $now")

    // In lokales Datum und Uhrzeit umwandeln (mit Systemzeitzone)
    val localDateTime: LocalDateTime = now.toLocalDa                    

Empfehlungen