Travail avec les dates en Java : aperçu des bibliothèques java.time, Joda-Time et Apache Commons

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 Java : aperçu des bibliothèques et outils modernes



La gestion des dates et des heures est l'une des tâches les plus courantes en développement Java. Pendant longtemps, les classes standard java.util.Date et java.util.Calendar étaient peu pratiques, mutables et sujettes aux erreurs. Heureusement, la situation a changé. Dans cet aperçu, nous examinerons trois approches principales : le package intégré java.time, la bibliothèque Joda-Time et les utilitaires Apache Commons Lang.



1. java.time (Java 8+) — le standard moderne



Depuis Java 8, le package java.time, basé sur les idées de Joda-Time, a été intégré à la bibliothèque standard. C'est la méthode principale et recommandée pour travailler avec les dates dans les nouveaux projets.



Classes clés :

  • LocalDate — date sans heure (année, mois, jour).
  • LocalTime — heure sans date (heures, minutes, secondes, nanosecondes).
  • LocalDateTime — combinaison de date et d'heure.
  • ZonedDateTime — date et heure avec fuseau horaire.
  • Instant — moment dans le temps en UTC (lisible par machine).
  • Duration et Period — pour travailler avec des intervalles de temps.


Exemples d'utilisation :

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

public class JavaTimeExample { public static void main(String[] args) { // Date et heure actuelles LocalDate today = LocalDate.now(); LocalTime now = LocalTime.now(); System.out.println("Aujourd'hui : " + today); System.out.println("Maintenant : " + now);

// Création d'une date spécifique LocalDate birthDate = LocalDate.of(1990, Month.MAY, 15); System.out.println("Date de naissance : " + birthDate);

// Travail avec les fuseaux horaires ZonedDateTime berlinTime = ZonedDateTime.now(ZoneId.of("Europe/Berlin")); ZonedDateTime tokyoTime = ZonedDateTime.now(ZoneId.of("Asia/Tokyo")); System.out.println("À Berlin : " + berlinTime); System.out.println("À Tokyo : " + tokyoTime);

// Différence entre les dates long daysBetween = ChronoUnit.DAYS.between(birthDate, today); System.out.println("Jours depuis l'anniversaire : " + daysBetween);

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

// Analyse d'une chaîne LocalDate parsedDate = LocalDate.parse("2023-12-31"); System.out.println("Analysé : " + parsedDate); }}


2. Joda-Time — une alternative éprouvée par le temps



Avant la sortie de Java 8, Joda-Time était le standard de facto pour la gestion des dates. Aujourd'hui, son utilisation n'est justifiée que dans les projets legacy ou pour la prise en charge des anciennes versions de Java (inférieures à 8).



Caractéristiques principales :

  • Objets immuables — sécurité des threads.
  • Prise en charge de nombreux systèmes calendaires (islamique, bouddhiste, etc.).
  • API simple et intuitive.


Exemple de code avec Joda-Time :

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

public class JodaTimeExample { public static void main(String[] args) { // Date et heure actuelles DateTime now = DateTime.now(); System.out.println("Maintenant : " + now);

// Création d'une date DateTime specificDate = new DateTime(2020, 6, 15, 10, 30, 0); System.out.println("Date spécifique : " + specificDate);

// Ajout de jours DateTime nextW

Recommendations