Travailler avec les dates et l'heure en Java : de A à Z pour les débutants

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 Java

\n\n

Travailler avec les dates et l'heure est l'une des tâches clés dans le développement de toute application. Que ce soit pour la journalisation des événements, le calcul des délais de livraison, la gestion d'un emploi du temps ou l'analyse de données — il est impossible de s'en passer sans comprendre comment Java gère les objets temporels. Dans cet article, nous aborderons tous les aspects essentiels : de l'ancienne API (Date et Calendar) au package moderne java.time (Java 8+). Vous apprendrez à créer, formater, comparer et calculer la différence entre les dates.

\n\n

1. Ancienne API : Date et Calendar

\n\n

Avant Java 8, les principales classes pour travailler avec les dates étaient java.util.Date et java.util.Calendar. Elles sont encore présentes dans le code hérité, il est donc important de comprendre leurs capacités de base et leurs limitations.

\n\n

1.1 La classe Date

\n

Date représente un instant précis avec une précision à la milliseconde. Cependant, elle présente de nombreux inconvénients : elle est mutable (non sécurisée dans les applications multithread) et gère mal l'internationalisation.

\n\n
import java.util.Date;\n\npublic class DateExample {\n    public static void main(String[] args) {\n        // Date et heure actuelles\n        Date now = new Date();\n        System.out.println("Date actuelle : " + now);\n\n        // Méthode obsolète pour obtenir l'année (1900 + ...)\n        int year = now.getYear() + 1900;\n        System.out.println("Année : " + year);\n    }\n}
\n\n

1.2 La classe Calendar

\n

Calendar est une classe plus flexible, mais lourde. Elle permet de manipuler des composants individuels de la date (année, mois, jour).

\n\n
import java.util.Calendar;\n\npublic class CalendarExample {\n    public static void main(String[] args) {\n        Calendar cal = Calendar.getInstance();\n        System.out.println("Heure actuelle : " + cal.getTime());\n\n        // Définition d'une date spécifique\n        cal.set(2025, Calendar.MARCH, 15);\n        System.out.println("Date définie : " + cal.getTime());\n\n        // Ajout de 7 jours\n        cal.add(Calendar.DAY_OF_MONTH, 7);\n        System.out.println("Dans une semaine : " + cal.getTime());\n    }\n}
\n\n

Inconvénients : numérotation des mois à partir de 0 (janvier = 0), mutabilité, absence de formatage simple.

\n\n

2. Nouvelle API : java.time (Java 8+)

\n\n

À partir de Java 8, le package java.time a été ajouté à la bibliothèque standard, basé sur les idées de la bibliothèque Joda-Time. Il se compose de classes immuables, ce qui rend le code sûr et prévisible.

\n\n

2.1 LocalDate — date uniquement

\n

LocalDate représente une date sans heure (année, mois, jour). Idéal pour les anniversaires, les calendriers.

\n\n
import java.time.LocalDate;\nimport java.time.Month;\n\npublic class LocalDateExample {\n    public static void main(String[] args) {\n        // Date actuelle\n        LocalDate today = LocalDate.now();\n        System.out.println("Aujourd'hui : " + today);\n\n        // Date spécifique\n        LocalDate specificDate = LocalDate.of(2025, Month.DECEMBER, 31);\n        System.out.println("Nouvel An : " + specificDate);\n\n        // Ajout/soustraction de jours\n        LocalDate nextWeek = today.plusDays(7);\n        System.out.println("Dans une semaine : " + nextWeek);\n    }\n}
\n\n

2.2 LocalTime — heure uniquement

\n

LocalTime stocke l'heure (heures, minutes, secondes, nanosecondes) sans lien avec la date.

\n\n
import java.time.LocalTime;\n\npublic class LocalTimeExample {\n    public static void main(String[] args) {\n        LocalTime now = LocalTime.now();\n        System.out.println("Heure actuelle : " + now);\n\n        LocalTime meeting = LocalTime.of(14, 30);\n        System.out.println("Réunion à : " + meeting);\n\n        // Comparaison des heures\n        if (now.isAfter(meeting)) {\n            System.out.println("La réunion est déjà passée");\n        }\n    }\n}<                

Blogs

Book Recommendations