Travailler avec les dates en Java : java.time et Joda-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

Qu'est-ce que c'est et pourquoi en avez-vous besoin ?

La manipulation des dates et des heures est l'une des tâches les plus courantes en programmation Java. La bibliothèque standard java.time (introduite dans Java 8) fournit une API puissante et intuitive pour traiter les dates, les heures, les fuseaux horaires et les périodes. Avant Java 8, les développeurs utilisaient souvent la bibliothèque tierce Joda-Time, qui a servi de prototype pour java.time. Les deux bibliothèques résolvent les problèmes des anciennes java.util.Date et java.util.Calendar : la sécurité des threads, l'immutabilité des objets et des méthodes de formatage pratiques.

Comment installer ?

java.time est intégré dans Java 8 et versions ultérieures — aucune installation n'est nécessaire. Pour Joda-Time, ajoutez la dépendance dans Maven :

<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.12.5</version>
</dependency>

Pour Gradle : implementation 'joda-time:joda-time:2.12.5'.

Fonctionnalités principales

  • LocalDate, LocalTime, LocalDateTime — manipulation de la date/heure sans fuseau horaire.
  • ZonedDateTime, OffsetDateTime — prise en compte des fuseaux horaires.
  • Period, Duration — différence entre les dates et les heures.
  • DateTimeFormatter — formatage et analyse flexibles.
  • Instant — moment dans le temps en UTC.

Exemple de code Java

import java.time.*;
import java.time.format.DateTimeFormatter;

public class DateExample {
public static void main(String[] args) {
// Date actuelle
LocalDate today = LocalDate.now();
System.out.println("Aujourd'hui : " + today);

// Création d'une date spécifique
LocalDate specificDate = LocalDate.of(2025, Month.MARCH, 15);
System.out.println("Date spécifique : " + specificDate);

// Différence entre les dates
Period period = Period.between(specificDate, today);
System.out.println("Différence : " + period.getYears() + " ans, " + period.getMonths() + " mois, " + period.getDays() + " jours");

// Formatage
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy");
String formatted = today.format(formatter);
System.out.println("Formaté : " + formatted);

// Analyse d'une chaîne
LocalDate parsed = LocalDate.parse("01.01.2024", formatter);
System.out.println("Analysé : " + parsed);

// Manipulation de l'heure et des fuseaux horaires
ZonedDateTime zoned = ZonedDateTime.now(ZoneId.of("Europe/Moscow"));
System.out.println("Heure de Moscou : " + zoned);
}
}

Quand utiliser

java.time est le choix principal pour tous les nouveaux projets sur Java 8+. Utilisez-le pour : le calcul de l'âge, les délais, les logs avec horodatage, les planificateurs de tâches, la manipulation de calendriers et de fuseaux horaires. Joda-Time est utile pour la maintenance d'anciens projets ou si des fonctionnalités supplémentaires sont nécessaires, comme Interval ou MutableDateTime. Les deux bibliothèques simplifient considérablement le code par rapport à l'ancien Calendar.

Recommendations