Arbeiten mit Datum und Uhrzeit in Kotlin: Vollständiger Leitfaden

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

Einleitung

Die Arbeit mit Datums- und Zeitangaben gehört zu den häufigsten Aufgaben in der modernen Entwicklung. Ob es um die Protokollierung von Ereignissen, die Berechnung von Fristen, die Anzeige eines Kalenders oder die Internationalisierung einer Anwendung geht – ein Kotlin-Entwickler muss in der Lage sein, zeitbezogene Daten korrekt zu verarbeiten. In diesem Artikel werden wir im Detail besprechen, wie man mit Datums- und Zeitangaben in Kotlin arbeitet, unter Verwendung der modernen API java.time, die seit Java 8 verfügbar und vollständig kompatibel mit Kotlin ist. Sie lernen die wichtigsten Klassen, Formatierung, Parsing, die Arbeit mit Zeitzonen und praktische Beispiele kennen, die Ihnen helfen, sauberen und zuverlässigen Code zu schreiben.



Wichtige Klassen für die Arbeit mit Datum und Zeit



In Kotlin, wie auch in Java, basiert die grundlegende Arbeit mit Datum und Zeit auf dem Paket java.time. Dieses Paket wurde entwickelt, um die veralteten java.util.Date und java.util.Calendar zu ersetzen. Es bietet unveränderliche (immutable) und threadsichere Klassen. Betrachten wir die wichtigsten davon.



LocalDate – Datum ohne Uhrzeit

Die Klasse LocalDate repräsentiert ein Datum (Jahr, Monat, Tag) ohne Berücksichtigung von Uhrzeit und Zeitzone. Ideal geeignet für Geburtstage, Feiertage oder Termindaten.

import java.time.LocalDate

fun main() { // Aktuelles Datum val today: LocalDate = LocalDate.now() println("Heute: $today") // Ausgabe: 2025-04-11

// Bestimmtes Datum val specificDate: LocalDate = LocalDate.of(2025, 12, 25) println("Weihnachten: $specificDate")

// Tage hinzufügen val nextWeek: LocalDate = today.plusDays(7) println("In einer Woche: $nextWeek")}


LocalTime – Uhrzeit ohne Datum

Wenn Sie nur die Uhrzeit benötigen (Stunden, Minuten, Sekunden, Nanosekunden), verwenden Sie LocalTime.

import java.time.LocalTime

fun main() { val now: LocalTime = LocalTime.now() println("Aktuelle Uhrzeit: $now")

val meetingTime: LocalTime = LocalTime.of(14, 30) println("Besprechung um: $meetingTime")

val oneHourLater: LocalTime = now.plusHours(1) println("In einer Stunde: $oneHourLater")}


LocalDateTime – Datum und Uhrzeit zusammen

Dies ist eine Kombination aus LocalDate und LocalTime. Die beliebteste Klasse zum Speichern eines Zeitpunkts ohne Bindung an eine Zeitzone.

import java.time.LocalDateTime

fun main() { val currentDateTime: LocalDateTime = LocalDateTime.now() println("Jetzt: $currentDateTime")

val newYear: LocalDateTime = LocalDateTime.of(2026, 1, 1, 0, 0) println("Neujahr: $newYear")}


ZonedDateTime und Instant – Arbeit mit Zeitzonen

ZonedDateTime fügt LocalDateTime Informationen über die Zeitzone (ZoneId) hinzu. Instant repräsentiert einen Zeitpunkt in UTC (Maschinenzeit).

import java.time.ZonedDateTimeimport java.time.ZoneIdimport java.time.Instant

fun main() { // Uhrzeit in einer bestimmten Zeitzone val moscowTime: ZonedDateTime = ZonedDateTime.now(ZoneId.of("Europe/Moscow")) println("Uhrzeit in Moskau: $moscowTime")

// Aktueller Zeitpunkt in UTC val instant: Instant = Instant.now() println("UTC-Zeitstempel: $instant")}


Formatierung und Parsing von Daten

Für die Umwandlung eines Datums in einen String (Formatierung) und eines Strings in ein Datum (Parsing) wird die Klasse DateTimeFormatter verwendet. Sie ermöglicht die Angabe beliebiger Muster.



Formatierung eines Datums in einen String

import java.time.LocalDateimport java.time.format.DateTimeFormatter

fun main() { val date = LocalDate.now() val formatter: DateTimeFormatter = DateTimeFormatter.ofPattern("dd.MM.yyyy") val formattedDate: String = date.format(formatter) println("Formatiertes Datum: $formattedDate") // Ausgabe: 11.04.2025

// Weitere Beispiele für Muster val formatter2 = DateTimeFormat

Blogs

Buchempfehlungen