Travailler avec les dates et l'heure en Kotlin : de A à Z — guide complet

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

Introduction au travail avec les dates et l'heure en Kotlin

\n\n

Travailler avec les dates et l'heure est l'une des tâches les plus courantes dans le développement moderne. Qu'il s'agisse de journalisation d'événements, de calcul de délais, de planification de tâches ou d'affichage d'interfaces utilisateur, une gestion correcte des horodatages est indispensable. En Kotlin, qui est entièrement compatible avec Java, le package java.time, introduit dans Java 8, est la norme de facto. Ce package a remplacé les obsolètes java.util.Date et java.util.Calendar, en proposant une API thread-safe, immuable et intuitive.

\n\n

Dans cet article, nous aborderons tous les aspects clés du travail avec les dates et l'heure en Kotlin : de la création d'objets à leur formatage, leur analyse syntaxique et l'exécution d'opérations arithmétiques. Vous apprendrez à utiliser LocalDate, LocalTime, LocalDateTime, Instant, Duration et Period à travers des exemples pratiques.

\n\n

1. Classes principales pour travailler avec les dates et l'heure

\n\n

Le package java.time contient plusieurs classes clés, chacune répondant à un besoin spécifique. Examinons-les en détail.

\n\n

1.1 LocalDate — travailler avec une date sans heure

\n\n

La classe LocalDate représente une date (année, mois, jour) sans tenir compte de l'heure ni du fuseau horaire. Elle est idéale pour les anniversaires, les événements calendaires et les dates sans lien avec un moment précis.

\n\n
import java.time.LocalDate\n\nfun main() {\n    // Date actuelle\n    val today = LocalDate.now()\n    println("Aujourd'hui : $today") // 2025-04-05\n\n    // Date spécifique\n    val newYear = LocalDate.of(2025, 1, 1)\n    println("Nouvel an : $newYear")\n\n    // Analyse syntaxique à partir d'une chaîne\n    val parsedDate = LocalDate.parse("2025-12-31")\n    println("Date analysée : $parsedDate")\n}
\n\n

1.2 LocalTime — travailler avec l'heure sans date

\n\n

LocalTime stocke uniquement l'heure (heures, minutes, secondes, nanosecondes). Il est utile pour stocker l'heure de début d'une journée de travail, un emploi du temps ou des minuteurs.

\n\n
import java.time.LocalTime\n\nfun main() {\n    // Heure actuelle\n    val now = LocalTime.now()\n    println("Maintenant : $now")\n\n    // Heure spécifique\n    val meetingTime = LocalTime.of(14, 30, 0)\n    println("Heure de la réunion : $meetingTime")\n\n    // Analyse syntaxique\n    val parsedTime = LocalTime.parse("09:15:30")\n    println("Heure analysée : $parsedTime")\n}
\n\n

1.3 LocalDateTime — combinaison de date et d'heure

\n\n

LocalDateTime combine LocalDate et LocalTime. C'est la classe la plus couramment utilisée pour stocker un moment sans fuseau horaire.

\n\n
import java.time.LocalDateTime\n\nfun main() {\n    // Date et heure actuelles\n    val current = LocalDateTime.now()\n    println("Maintenant : $current")\n\n    // Création à partir de composants\n    val specific = LocalDateTime.of(2025, 4, 5, 10, 30, 0)\n    println("Moment spécifique : $specific")\n\n    // Combinaison de date et d'heure\n    val date = LocalDate.of(2025, 12, 25)\n    val time = LocalTime.of(18, 0)\n    val christmas = LocalDateTime.of(date, time)\n    println("Noël : $christmas")\n}
\n\n

1.4 Instant — moment en UTC

\n\n

Instant représente un point sur la ligne du temps au format Unix timestamp (nombre de secondes et nanosecondes depuis le 1er janvier 1970). Indispensable pour stocker des logs, travailler avec des bases de données et échanger des données entre systèmes.

\n\n
import java.time.Instant\n\nfun main() {\n    // Moment actuel en UTC\n    val now = Instant.now()\n    println("Maintenant (UTC) : $now")\n\n    // À partir d'un Unix timestamp\n    val fromEpoch = Instant.ofEpochSecond(1_700_000_000)\n    println("Depuis le timestamp : $fromEpoch")\n\n    // Conversion en millisecondes\n    val millis = now.toEpochMilli()\n    println("Millisecondes : $millis")\n}
\n\n

2. Formatage et analyse syntaxique des dates et de l'heure

\n\n

Pour convertir des dates en chaînes

Blogs

Book Recommendations