Travailler avec les dates en Kotlin : aperçu des bibliothèques et outils
Travailler avec les dates et l'heure est l'une des tâches clés dans la plupart des applications. En Kotlin, en tant que langage multiplateforme moderne, il existe plusieurs façons de travailler avec les dates. Dans cet article, nous examinerons les principales bibliothèques et outils qui vous aideront à gérer efficacement les dates, l'heure, les intervalles et les fuseaux horaires dans vos projets Kotlin.
1. Bibliothèque standard Java : java.time
Puisque Kotlin est entièrement compatible avec Java, vous pouvez utiliser la puissante bibliothèque java.time (JSR-310), apparue dans Java 8. C'est la méthode recommandée pour les applications serveur et Android (à partir de l'API 26+).
Classes principales :
LocalDate— date sans heure (année, mois, jour).LocalTime— heure sans date.LocalDateTime— date et heure sans fuseau horaire.ZonedDateTime— date et heure avec fuseau horaire.Instant— moment dans le temps en UTC (temps machine).DurationetPeriod— intervalles de temps.
Exemple d'utilisation :
import java.time.*
fun main() { // Date et heure actuelles val now = LocalDateTime.now() println("Maintenant : $now")
// Création d'une date spécifique val birthDate = LocalDate.of(1990, Month.JUNE, 15) println("Date de naissance : $birthDate")
// Travail avec les fuseaux horaires val zonedDateTime = ZonedDateTime.now(ZoneId.of("Europe/Moscow")) println("Heure à Moscou : $zonedDateTime")
// Différence entre les dates val from = LocalDate.of(2023, 1, 1) val to = LocalDate.now() val daysBetween = ChronoUnit.DAYS.between(from, to) println("Jours depuis le Nouvel An : $daysBetween")
// Formatage val formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm") println("Date formatée : ${now.format(formatter)}")}Avantages : intégrée, fiable, prise en charge complète de toutes les fonctionnalités.
Inconvénients : non prise en charge sur les anciens Android (avant l'API 26) sans désugarisation.
2. kotlinx-datetime (bibliothèque multiplateforme de JetBrains)
Pour les projets multiplateformes (KMP), JetBrains a créé la bibliothèque kotlinx-datetime. Elle fournit une API unifiée pour toutes les plateformes (JVM, Native, JS).
Classes principales :
Instant— moment dans le temps en UTC.LocalDateTime— date+heure sans fuseau horaire.LocalDateetLocalTime.DateTimePeriodetDatePeriod— intervalles.TimeZone— fuseau horaire.
Exemple d'utilisation :
import kotlinx.datetime.*
fun main() { // Moment actuel val now = Clock.System.now() println("UTC actuel : $now")
// Conversion en heure locale val localDateTime = now.toLocalDateTime(TimeZone.currentSystemDefault()) println("Heure locale : $localDateTime")
// Création d'une date val date = LocalDate(2024, 12, 25) println("Date : $date")
// Différence entre les dates val start = LocalDateTime(2024, 1, 1, 0, 0) val end = LocalDateTime(2024, 12, 31, 23, 59) val period = start.periodUntil(end, DateTimeUnit.DAY) println("Jours entre : $period")
// Formatage (nécessite une bibliothèque séparée ou manuel) println("Année : ${localDateTime.year}, mois : ${localDateTime.monthNumber}")}Avantages : multiplateforme, légèreté, support officiel.
Inconvénients : capacités de formatage limitées (pas de DateTimeFormatter intégré).
Aussi dans la bibliothèque
Intégration des métriques Prometheus dans les applications Java : bibliothèque simpleclient
Bibliothèques GraphQL TypeScript : Guide complet pour choisir et utiliser
Surveillance des applications Node.js : Outils et bibliothèques
Génération de rapports PDF en C# (.NET) avec iTextSharp et QuestPDF