Travail avec les dates en Java : aperçu des bibliothèques et outils

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



Le travail avec les dates et l'heure est l'une des tâches les plus fréquentes dans le développement en Java. Pendant longtemps, les classes standard java.util.Date et java.util.Calendar ont suscité de nombreuses critiques en raison de leur manque d'intuitivité, de leur mutabilité et de leurs problèmes de sécurité des threads. Cependant, avec la sortie de Java 8, la situation a radicalement changé. Dans cet aperçu, nous examinerons les principales bibliothèques pour travailler avec les dates en Java, leurs points forts et des exemples d'utilisation.



1. java.time (JSR-310) — API standard



Depuis Java 8, le package java.time est l'outil principal pour travailler avec les dates et l'heure. Il a été développé sous la direction de Stephen Colebourne, l'auteur de Joda-Time, et intègre les meilleures pratiques.



Classes clés :

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


Exemple d'utilisation :



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

public class JavaTimeExample { 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);

// Travail avec l'heure LocalTime now = LocalTime.now(); LocalTime meetingTime = LocalTime.of(14, 30); System.out.println("Heure de la réunion : " + meetingTime);

// Formatage DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm"); LocalDateTime event = LocalDateTime.of(2025, 12, 31, 23, 59); String formatted = event.format(formatter); System.out.println("Formaté : " + formatted);

// Différence entre les dates Period period = Period.between(today, specificDate); System.out.println("Jours jusqu'au 15 mars : " + period.getDays()); }}


Avantages : intégré au JDK, sécurité des threads, objets immuables, API riche, prise en charge de tous les fuseaux horaires.



2. Joda-Time



Avant l'arrivée de java.time, Joda-Time était de facto la norme pour travailler avec les dates en Java. Aujourd'hui, son utilisation n'est justifiée que dans les anciens projets (antérieurs à Java 8), car les développeurs recommandent de migrer vers java.time.



Exemple :



import org.joda.time.DateTime;import org.joda.time.Days;import org.joda.time.LocalDate;

public class JodaTimeExample { public static void main(String[] args) { // Date actuelle LocalDate today = LocalDate.now(); DateTime now = DateTime.now();

// Différence entre les dates LocalDate start = new LocalDate(2025, 1, 1); LocalDate end = new LocalDate(2025, 12, 31); int days = Days.daysBetween(start, end).getDays(); System.out.println("Jours entre : " + days); }}


Inconvénients : nécessite une dépendance externe, n'est pas activement mis à jour, inférieur à java.time en termes de fonctionnalités.



3. Apache Commons Lang 3



La bibliothèque org.apache.commons.lang3.time fournit des utilitaires pratiques pour travailler avec les dates, notamment pour le formatage, l'analyse et les calculs.



Classes populaires :

  • DateUtils — méthodes pour

Recommendations