Parcours
/
Java
Java
/
Programme
/
Date et heure
Da

Date et heure en Java

6 exercices

À propos de Date et heure

Le package java.time, introduit avec Java 8, contient plusieurs classes pour travailler avec les dates et les heures.

LocalDate

La classe java.time.LocalDate représente une date sans fuseau horaire dans le système de calendrier ISO-8601, comme 2007-12-03 :

LocalDate date = LocalDate.of(2007, 12, 3);

On peut comparer des dates entre elles :

LocalDate date1 = LocalDate.of(2007, 12, 3);
LocalDate date2 = LocalDate.of(2007, 12, 4);

date1.isBefore(date2);
// => true

date1.isAfter(date2);
// => false

Une instance de LocalDate possède des getters pour en extraire les différentes parties :

LocalDate date = LocalDate.of(2007, 12, 3);

date.getYear();
// => 2007

date.getMonthValue();
// => 12

date.getDayOfMonth();
// => 3

Une instance de LocalDate possède des méthodes pour lui ajouter des unités de temps.

Note

Ces méthodes renvoient une nouvelle instance de LocalDate et ne modifient pas l'instance existante, car la classe LocalDate est immuable.

LocalDate date = LocalDate.of(2007, 12, 3);

date.plusDays(3);
// => 2007-12-06

date.plusMonths(1);
// => 2008-01-03

date.plusYears(1);
// => 2008-12-03

LocalDateTime

La classe java.time.LocalDateTime représente une date et une heure sans fuseau horaire dans le système de calendrier ISO-8601, comme 2007-12-03T10:15:30 :

LocalDateTime datetime = LocalDateTime.of(2007, 12, 3, 10, 15, 30);

datetime.getYear();
// => 2007

datetime.getMonthValue();
// => 12

datetime.getDayOfMonth();
// => 3

datetime.getHours();
// => 10

datetime.getMinutes();
// => 15

datetime.getSeconds();
// => 30

Comme la classe LocalDate, une instance de LocalDateTime dispose des mêmes méthodes pour la comparer à d'autres LocalDateTime et pour lui ajouter des unités de temps.

Il est également possible de convertir une instance de LocalDate en LocalDateTime :

LocalDate date = LocalDate.of(2007, 12, 3);
LocalDateTime datetime = date.atTime(10, 15, 30);
datetime.toString();
// => "2007-12-03T10:15:30"

Formater les dates et les heures

LocalDate et LocalDateTime utilisent tous les deux la notation standard ISO-8601 pour la conversion depuis et vers une String.

LocalDateTime datetime = LocalDateTime.of(2007, 12, 3, 10, 15, 30);
LocalDateTime parsed = LocalDateTime.parse("2007-12-03T10:15:30");

datetime.isEqual(parsed);
// => true

Il n'est pas possible d'analyser un objet LocalDate ou LocalDateTime à partir d'une String de ce type dans un autre format. Pour formater des dates avec un format personnalisé, il faut plutôt utiliser la classe java.time.format.DateTimeFormatter :

DateTimeFormatter parser = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate date = LocalDate.parse("03/12/2007", formatter);

DateTimeFormatter printer = DateTimeFormatter.ofPattern("MMMM d, yyyy");
printer.format(date);
// => "December 3, 2007"

Il est également possible de préciser une locale lors de la création du format personnalisé, afin de formater et d'analyser des dates pour différentes régions :

DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.FRENCH).format(date);
// => décembre 3, 2007

DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.of("pt")).format(date);
// => dezembro 3, 2007
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet

Apprends Date et heure