Java est un langage de programmation qui a progressé et s'est améliorée au fil du temps. Les classes de gestion des dates en sont un exemple. java.util.Date y java.util.Calendar, qui existent depuis la nuit des temps. Cependant, ces classes ne sont pas les plus adaptées à la gestion des dates en Java. C'est pourquoi, chez Euroinnova, nous allons nous concentrer sur les variables de la classe date type.
Les Paquet java.time est une bonne alternative pour gérer les dates en Java, bien qu'elle présente certaines singularités et variables que vous devez prendre en compte. Connaissez-vous LocalTime ou LocalDateTime ? Préparez-vous car nous allons approfondir cet aspect, afin que vous puissiez clore cet article avec toutes les informations nécessaires. Si vous souhaitez continuer à vous familiariser avec Java, nous vous recommandons de consulter l'ouvrage Cours avancé de programmation frontale avec Javascript Angular.
Qu'est-ce qu'une date en Java ?
Les gestion des dates en Java est d'une grande importance pour de nombreuses applications, car c'est le seul moyen d'enregistrer et de gérer des événements chronologiques. Comme nous le disons, le Classe de date en Java est présent depuis les premières versions du langage, ce qui permet de représenter un point dans le temps (millisecondes depuis le 1er janvier 1970, 00:00:00 GMT).
Cependant, les versions les plus récentes de Java ont remplacé la classe Date par les classes du paquetage java.time. Pourquoi ? Parce que sa fonctionnalité était limitée par certaines incohérences, comme l'absence de prise en charge directe des fuseaux horaires. C'est pourquoi de nouvelles classes ont été introduites dans Java 8, comme Date locale, Heure locale y LocalDateTime, Le nouveau système, qui permet une plus grande précision et un meilleur contrôle des opérations de datation.
Comment obtenir la date en Java ?
Obtenir la date du jour en Java est un processus simple, puisqu'il suffit d'utiliser la classe Date locale du paquet java.time. Cette méthode vous permet d'obtenir la date actuelle du système de manière efficace. Voici un exemple de cette méthode :
import java.time.LocalDate ;
public class DateExample {
public static void main(String[] args) {
LocalDate today = LocalDate.now() ;
System.out.println(«Date d'aujourd'hui : » + aujourd'hui) ;
}
}
Comme nous pouvons le voir dans ce code, il existe une méthode now() dans la classe Date locale. Ceci renvoie la date actuelle dans le format aaaa-mm-jj, qui est le format standard en Java. Si nous voulons également obtenir l'heure, nous devons recourir à la classe LocalDateTime.
Comme on peut le constater, cette méthode est plus moderne que la classe Date, car elle offre une plus grande flexibilité et une meilleure compatibilité avec la classe formats de date et d'heure java.
Comment déclarer une variable date en Java ?
Déclarer une variable de Type de date en Java est très simple, mais vous devez savoir quelle classe de date vous devez utiliser dans votre projet. Par exemple, ce projet utilise le paquetage java.util, qui déclare une variable de type Date et lui attribue la date et l'heure actuelles.
import java.util.Date;
public class DateDeclaration {
public static void main(String[] args) {
Date date = new Date(); // Date du jour
System.out.println(« Date du jour : » + date);
}
}
La valeur correspondant à cette date sera affichée sous forme de chaîne de caractères, en incluant l'heure et les minutes. Cependant, nous savons déjà que la classe Date présente certaines limites ; c'est pourquoi nous vous recommandons d'opter pour les nouvelles classes du package java.time, qui offre une plus grande précision et un meilleur contrôle. Cela donnerait donc ceci pour la classe Date locale.
import java.time.LocalDate ;
public class LocalDateExample {
public static void main(String[] args) {
LocalDate localDate = LocalDate.of(2023, 10, 12); // Année, mois et jour
System.out.println(« Date : » + localDate);
}
}
On précise ici les valeurs correspondant à l'année, au mois et au jour. De plus, l'utilisation de formatage de la date en Java facilite le analyse de la date et leur conversion dans différents formats.
Le package java.time, en détail
Il est maintenant temps de se plonger pleinement dans le Paquet java.time. Comme nous l'avons dit, il a été introduit en Java 8 afin d'améliorer le traitement des dates et des heures, en résolvant les limites des classes Date et Calendar. Ce package comprend des classes telles que LocalDate, LocalTime, LocalDateTime et ZonedDateTime, chacune étant conçue pour un objectif précis.
Le package java.time s'appuie sur les principes d'immuabilité et de clarté, ce qui permet une manipulation plus précise et plus sûre des dates et des heures dans les applications Java. De plus, son format rend son utilisation plus intuitive et plus moderne, facilitant la lecture, l'écriture et la conversion des dates dans divers formatage de la date en Java.
Date locale
Les classe LocalDate C'est l'outil principal de java.time, car il permet de travailler avec des dates sans avoir à gérer les fuseaux horaires ni les heures spécifiques. Cette classe est très utile pour stocker des événements qui ne nécessitent que des informations de date ; de plus, elle permet d'obtenir la date du jour à l'aide de la méthode méthode now().
Il est également possible d'ajouter ou de soustraire des jours, des mois ou des années à une date à l'aide de méthodes telles que plusDays() ou minusMonths(). D'autre part, il est possible de comparer des dates à l'aide de méthodes telles que isBefore() ou isAfter(). Voici un exemple qui montre comment ajouter des jours à une date :
LocalDate today = LocalDate.now() ;
LocalDate futureDate = today.plusDays(10); // Ajouter 10 jours
System.out.println(« Date future : » + futureDate);
De cette manière, il est possible de manipuler des délais ou des événements programmés à des dates précises sans avoir à recourir à des composants temporels tels que « hour minute » ou « hh mm ss ».
Heure locale
Heure locale c'est une autre classe du paquet java.time qui permet de gérer le temps sans être lié à une date précise, puisqu'il ne contient que des informations sur les heures, les minutes, les secondes et les nanosecondes. Il est donc idéal pour les situations où il suffit d'enregistrer des durées sans se soucier du jour, comme pour les horaires d'ouverture,
Voici un exemple :
LocalTime time = LocalTime.of(14, 30); // Heure : 14 h 30
System.out.println(« Heure : » + time);
LocalDateTime
La classe LocalDateTime Elle combine à la fois la date et l'heure en une seule classe, ce qui en fait l'une des classes les plus polyvalentes de java.time. Pourquoi ? Parce qu'elle inclut à la fois les fonctionnalités de LocalDate et de LocalTime, gérant ainsi aussi bien la date que l'heure sans tenir compte du fuseau horaire.
Voici un exemple de LocalDateTime avec la méthode of() pour définir à la fois la date et l'heure.
LocalDateTime dateTime = LocalDateTime.of(2023, 10, 12, 14, 30); // Année, mois, jour, heure et minute
System.out.println(« Date et heure : » + dateTime);
Instantané
Instantané Il s'agit d'une classe Java permettant de représenter un instant précis sur la ligne de temps, mesuré en nanosecondes à partir du 1er janvier 1970, 00 h 00 min 00 s GMT. La différence, c'est qu'on travaille avec un concept universel du temps (UTC), idéal pour les opérations nécessitant une très grande précision temporelle.
Voici un petit exemple :
Instant instant = Instant.now(); // Date et heure actuelles au format UTC
System.out.println(« Instantané : » + instant);
ZonedDateTime
La classe ZonedDateTime Il combine les fonctionnalités de LocalDateTime avec la gestion des fuseaux horaires, ce qui nous permet de travailler avec des dates et des heures correspondant à différents lieux. Dans les applications internationales, les événements se déroulent dans différents fuseaux horaires, ce qui nécessite des conversions automatiques.
Voici un exemple illustrant comment créer un ZonedDateTime :
ZonedDateTime zonedDateTime = ZonedDateTime.now();
System.out.println(« Date et heure avec fuseau horaire : » + zonedDateTime);
Période
Période C'est une autre classe importante en Java permettant de représenter un intervalle de temps en termes de années, mois et jours. Il est surtout utilisé lorsqu'on souhaite calculer la différence entre deux dates sans tenir compte des heures ni des secondes. Ainsi, on peut très facilement créer un « Period » à l'aide de la méthode between().
LocalDate startDate = LocalDate.of(2020, 1, 1);
LocalDate endDate = LocalDate.now();
Période période = Période.between(dateDeDébut, dateDeFin) ;
System.out.println(« Différence : » + period.getYears() + » ans »);
Durée
Durée Elle est conçue pour représenter un intervalle de temps, mais en termes de heures, minutes, secondes et nanosecondes. Elle se distingue de Period en ce qu'elle est conçue pour mesurer des durées plus courtes et plus précises, comme, par exemple, un appel téléphonique.
Voici comment créer une Duration :
LocalTime startTime = LocalTime.of(10, 0);
LocalTime endTime = LocalTime.of(12, 30);
Duration duration = Duration.between(startTime, endTime);
System.out.println(« Durée : » + duration.toHours() + » heures »);
Les éléments d'une date ou d'une heure
En Java, une date ou heure se compose de plusieurs parties. Par exemple, dans la classe Date locale, vous pouvez extraire l'année, le mois et le jour d'une date spécifique à l'aide de méthodes telles que getYear(), getMonthValue et getDayofMonth(). Voici un exemple :
LocalDate date = LocalDate.now();
int année = date.getYear();
int mois = date.getMonthValue();
int jour = date.getDayOfMonth();
System.out.println(« Année : » + year + «, Mois : » + month + «, Jour : » + day);
On peut procéder de la même manière avec les composantes d'une heure, telles que l'heure, la minute et la seconde. Dans ce cas, on utilise des méthodes telles que getHour(), getMinute() et getSecond().
LocalTime time = LocalTime.now();
int heure = time.getHour();
int minute = time.getMinute();
System.out.println(« Heure : » + hour + «, Minute : » + minute);
Convertir les dates et les heures
C'est une question courante, car la conversion des dates et des heures en Java est l'une des tâches les plus fréquentes. Cependant, cette opération est en réalité très simple à réaliser lorsqu'on utilise des classes telles que LocalDate, LocalTime, LocalDateTime et ZonedDateTime.
Par exemple, pour convertir un objet LocalDate en LocalDateTime, il suffit de combiner une date et une heure à l'aide de la méthode atTime().
LocalDate date = LocalDate.now();
LocalDateTime dateTime = date.atTime(14, 30);
System.out.println(« Date et heure : » + dateTime);
De même, pour convertir une date Pour obtenir un format de chaîne spécifique, vous pouvez utiliser DateTimeFormatter, qui vous permet de définir le format souhaité, puis de l'appliquer à la date ou à l'heure.
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(« dd-MM-yyyy »);
String formattedDate = date.format(formatter);
System.out.println(« Date formatée : » + formattedDate);
Ajustements temporaires
Les ajustements temporaires sont utilisées en Java pour modifier des dates ou des heures selon certaines règles prédéfinies. Comme nous l'avons déjà vu, il est possible d'ajouter ou de soustraire des jours, des semaines, des mois ou des années à l'aide d'une classe de méthodes. Cependant, il est également possible d'effectuer des ajustements en fonction de jours spécifiques du mois ou de l'année. Par exemple, ajuster une date pour qu'elle tombe le dernier jour du mois à l'aide de la méthode withDayOfMonth().
LocalDate endOfMonth = today.withDayOfMonth(today.lengthOfMonth());
System.out.println(« Dernier jour du mois : » + endOfMonth);
Format de date personnalisé
Le format des dates peut également être personnalisé en Java à l'aide de la classe DateTimeFormatter, qui permet de définir des formats spécifiques pour convertir les heures et les dates. Par exemple, si vous souhaitez formater une date au format jj-mm-aaaa, Tu peux utiliser le code suivant :
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(« dd-MM-yyyy »);
LocalDate date = LocalDate.now();
String formattedDate = date.format(formatter);
System.out.println(« Date au format personnalisé : » + formattedDate);
Il existe des projets dans lesquels il est nécessaire de présenter les dates d'une manière spécifique, par exemple dans des rapports ou dans des applications dont les utilisateurs se trouvent dans différentes régions et utilisent des formats différents. C'est pourquoi vous ne devez pas oublier de DateTimeFormatter.
Exemples pratiques
Pour conclure cet article, nous ne voyons pas de meilleure façon de le faire que de vous proposer une série d'exemples concrets illustrant comment utiliser les classes et les méthodes du package java.time.
Obtenir la date et l'heure actuelles
Voici un exemple simple montrant comment obtenir la date et l'heure actuelles à l'aide de LocalDateTime :
import java.time.LocalDateTime;
public class DateTimeExample {
public static void main(String[] args) {
LocalDateTime currentDateTime = LocalDateTime.now();
System.out.println(« Date et heure actuelles : » + currentDateTime);
}
}
Mettre une date en forme
Nous allons maintenant vous montrer comment mettre en forme une date à l'aide de DateTimeFormatter :
import java.time.LocalDate ;
import java.time.format.DateTimeFormatter;
public class ExempleDeFormatDeDate {
public static void main(String[] args) {
LocalDate date = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(« dd-MM-yyyy »);
String formattedDate = date.format(formatter);
System.out.println(« Date formatée : » + formattedDate); } }
Calculer la différence entre deux dates
Ici, nous utilisons Période pour calculer la différence en années, mois et jours entre deux dates différentes :
import java.time.LocalDate ;
import java.time.Period;
public class ExempleDePériode {
public static void main(String[] args) {
LocalDate startDate = LocalDate.of(2020, 1, 1);
LocalDate endDate = LocalDate.now();
Période période = Période.between(dateDeDébut, dateDeFin) ;
System.out.println(« Cela fait » + period.getYears() + » ans, «
period.getMonths() + » mois, et » + period.getDays() + » jours. »);
}
}
Utilisation des fuseaux horaires
Pour finir, voici un exemple illustrant comment travailler avec ZonedDateTime pour gérer les dates et les heures dans différents fuseaux horaires :
import java.time.ZonedDateTime;
import java.time.ZoneId;
public class ZonedDateTimeExample {
public static void main(String[] args) {
ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.of(«America/New_York»));
System.out.println(« Date et heure à New York : » + zonedDateTime);
}
}



