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 Aussi dans la bibliothèque
Travailler avec CSV en Swift (iOS/macOS) : bibliothèque SwiftCSV et bases du parsing
GraphQL en C++ : bibliothèque cppgraphqlgen pour créer des API
Travailler avec Excel en C++ : bibliothèques, exemples et outils
Envoi d'email en Kotlin : bibliothèques et exemples de code