Travailler avec les dates en Java : bibliothèques et outils
Travailler avec les dates et l'heure est l'une des tâches clés dans toute application. En Java, pendant longtemps, les classes standard java.util.Date et java.util.Calendar ont été critiquées en raison de leur inconfort, de leur mutabilité et de leur mauvaise prise en charge des fuseaux horaires. Cependant, avec la sortie de Java 8, la situation a radicalement changé. Dans cet article, nous allons passer en revue les principales bibliothèques et outils pour travailler avec les dates en Java, qui vous aideront à écrire un code propre et fiable.
1. Bibliothèque standard java.time (Java 8+)
Depuis Java 8, les développeurs ont accès au puissant package java.time, basé sur la norme ISO-8601. C'est la méthode recommandée pour travailler avec les dates et l'heure. Les classes principales :
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 prise en compte du fuseau horaire.Instant— moment en UTC (pour le temps machine).DurationetPeriod— pour travailler avec des intervalles.
Exemple : création et formatage d'une date
import java.time.LocalDate;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 birthDate = LocalDate.of(1990, 5, 15); System.out.println("Date de naissance : " + birthDate);
// Formatage DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy"); String formatted = birthDate.format(formatter); System.out.println("Date formatée : " + formatted);
// Analyse d'une chaîne String dateStr = "2023-12-31"; LocalDate parsedDate = LocalDate.parse(dateStr); System.out.println("Analysé : " + parsedDate); }}Exemple : calcul de la différence entre deux dates
import java.time.LocalDate;import java.time.Period;import java.time.temporal.ChronoUnit;
public class DateDifference { public static void main(String[] args) { LocalDate start = LocalDate.of(2020, 1, 1); LocalDate end = LocalDate.of(2024, 3, 15);
Period period = Period.between(start, end); System.out.println("Différence : " + period.getYears() + " ans, " + period.getMonths() + " mois, " + period.getDays() + " jours");
long daysBetween = ChronoUnit.DAYS.between(start, end); System.out.println("Total de jours : " + daysBetween); }}2. Joda-Time (pour les anciennes versions de Java)
Avant l'arrivée de java.time, la bibliothèque Joda-Time était la norme de facto. Elle fournissait des classes immuables pratiques et une prise en charge des fuseaux horaires. Si vous travaillez avec Java 7 ou une version antérieure, Joda-Time est un excellent choix.
Ajout (Maven) :
<dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> <version>2.12.7</version></dependency>Exemple : travail avec Joda-Time
import org.joda.time.DateTime;import org.joda.time.Days;import org.joda.time.format.DateTimeFormat;import org.joda.time.format.DateTimeFormatter;
public class JodaExample { public static void main(String[] args) { // Date et heure actuelles DateTime now = new DateTime(); System.out.println("Maintenant : " + now);
// Création d'une date DateTime specificDate = Aussi dans la bibliothèque
Paging 3 pour Kotlin : guide complet avec exemples
Migrations de bases de données en Swift : outils et approches pour iOS/macOS