Travail avec les dates en Kotlin : bibliothèques et outils (Kotlinx-datetime, Joda-Time, java.time)

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travail avec les dates en Kotlin : aperçu des bibliothèques et outils



Le traitement des dates et de l'heure est l'une des tâches clés dans toute application : de la journalisation des événements au calcul des délais et à l'affichage des calendriers. En Kotlin, en tant que langage fonctionnant sur la JVM (et prenant également en charge les projets multiplateformes), le développeur a accès à plusieurs bibliothèques puissantes. Dans cet article, nous examinerons trois approches principales : kotlinx-datetime (recommandée pour la multiplateforme), java.time (pour JVM/Android) et Joda-Time (bibliothèque légendaire, pertinente pour les anciens projets).



1. kotlinx-datetime — la bibliothèque multiplateforme officielle



kotlinx-datetime est une bibliothèque moderne de JetBrains, créée spécialement pour Kotlin Multiplatform. Elle fournit une API unifiée pour travailler avec les dates, l'heure, les fuseaux horaires et les durées sur toutes les plateformes (JVM, JS, Native).



Installation (Gradle)

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


Classes principales et exemples

  • Instant — un moment dans le temps (UTC).
  • LocalDateTime — date+heure sans fuseau horaire.
  • LocalDate — uniquement la date.
  • LocalTime — uniquement l'heure.
  • TimeZone — le fuseau horaire.


import kotlinx.datetime.*

fun main() { // Moment actuel en UTC val now: Instant = Clock.System.now() println("Now UTC: $now")

// Conversion en heure locale (fuseau horaire système) val localDateTime: LocalDateTime = now.toLocalDateTime(TimeZone.currentSystemDefault()) println("Local: $localDateTime")

// Travail avec les dates val today: LocalDate = localDateTime.date val tomorrow: LocalDate = today.plus(1, DateTimeUnit.DAY) println("Tomorrow: $tomorrow")

// Différence entre les dates val daysBetween = tomorrow.daysUntil(today) println("Days between: $daysBetween") // -1

// Analyse d'une chaîne val parsedDate = LocalDate.parse("2025-03-15") println("Parsed: $parsedDate")}


2. java.time (ThreeTen-Backport) — standard pour JVM et Android



Depuis Java 8, le package java.time (JSR-310) a été intégré à la bibliothèque standard. Pour Android API < 26, on utilise ThreeTen-Backport (ou ThreeTenABP pour Android). Kotlin est entièrement compatible avec cette API.



Installation (pour Android avec minSdk < 26)

dependencies {    implementation("org.threeten:threetenbp:1.6.9")}


Exemples

import java.time.*

fun main() { // Date et heure actuelles val now = LocalDateTime.now() println("Now: $now")

// Création d'une date spécifique val date = LocalDate.of(2025, Month.DECEMBER, 25) println("Christmas: $date")

// Formatage val formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm") val formatted = now.format(formatter) println("Formatted: $formatted")

// Différence entre les dates 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 — une bibliothèque éprouvée par le temps



Joda-Time était le standard de facto avant l'arrivée de java.time. Aujourd'hui, elle est principalement utilisée dans les projets legacy. La bibliothèque offre des fonctionnalités riches, mais est considérée comme obsolète — il est recommandé de migrer vers java.time ou kotlinx-datetime.



Installation

dependencies {    implementation("joda-time:joda-time:2.12.7")}


Exemple

import org.joda.time.*import org.joda.time.format.DateTimeFormat

fun main() { val now = DateTime.now() println("Now: $now")

// Aj

Recommendations