logo

Date et heure Java

Les packages java.time, java.util, java.sql et java.text contiennent des classes pour représenter la date et l'heure. Les classes suivantes sont importantes pour gérer la date en Java.

API de date/heure Java 8

Java a introduit une nouvelle API de date et d'heure depuis Java 8. Le package java.time contient les classes de date et d'heure Java 8.

API de date/heure classique

Mais l’API Java Date classique ou ancienne est également utile. Voyons la liste des classes Date et Time classiques.

Formatage de la date et de l'heure

Nous pouvons formater la date et l'heure en Java en utilisant les classes suivantes :

API Java de date et d'heure

Java fournit la fonctionnalité de date et d'heure à l'aide de deux packages java.time et java.util. Le package java.time est introduit dans Java 8 et les classes nouvellement introduites tentent de surmonter les lacunes des anciennes classes java.util.Date et java.util.Calendar.

Classes d'API de date et d'heure classiques

Les classes principales avant la sortie de Java 8 étaient :

Rudyard Kipling si explication

Java.lang.System : La classe fournit la méthode currentTimeMillis() qui renvoie l'heure actuelle en millisecondes. Il indique la date et l'heure actuelles en millisecondes à partir du 1er janvier 1970.

java.util.Date : Il est utilisé pour afficher un instant spécifique, avec une unité de milliseconde.

java.util.Calendar : Il s'agit d'une classe abstraite qui fournit des méthodes de conversion entre instances et de manipulation des champs du calendrier de différentes manières.

java.text.SimpleDateFormat : Il s'agit d'une classe utilisée pour formater et analyser les dates d'une manière prédéfinie ou selon un modèle défini par l'utilisateur.

java.util.TimeZone : Il représente un décalage de fuseau horaire et calcule également l'heure d'été.

Inconvénients des API Date/Heure existantes

    Sécurité du fil :Les classes existantes telles que Date et Calendar n'assurent pas la sécurité des threads. Cela entraîne donc des problèmes de concurrence difficiles à déboguer qui doivent être pris en compte par les développeurs. Les nouvelles API de date et d'heure de Java 8 assurent la sécurité des threads et sont immuables, évitant ainsi le problème de concurrence des développeurs.Mauvaise conception d'API :Les API classiques de date et de calendrier ne fournissent pas de méthodes pour exécuter les fonctionnalités quotidiennes de base. Les classes Date et Heure introduites dans Java 8 sont centrées sur ISO et fournissent un certain nombre de méthodes différentes pour effectuer des opérations concernant la date, l'heure, la durée et les périodes.Gestion difficile des fuseaux horaires :Gérer le fuseau horaire à l’aide des classes classiques Date et Calendar est difficile car les développeurs étaient censés en écrire la logique. Avec les nouvelles API, la gestion du fuseau horaire peut être facilement effectuée avec les API Local et ZonedDate/Time.

Nouvelle API Date Heure dans Java 8

La nouvelle API de date permet de surmonter les inconvénients mentionnés ci-dessus avec les classes héritées. Il comprend les cours suivants :

java.time.LocalDate : Il représente une année-mois-jour dans le calendrier ISO et est utile pour représenter une date sans heure. Il peut être utilisé pour représenter uniquement des informations de date, telles qu'une date de naissance ou une date de mariage.

java.time.LocalTime : Cela ne s'applique qu'au temps. Il est utile pour représenter l'heure de la journée basée sur l'homme, comme les heures de cinéma ou les heures d'ouverture et de fermeture de la bibliothèque locale.

java.time.LocalDateTime : Il gère à la fois la date et l’heure, sans fuseau horaire. C'est une combinaison de LocalDate avec LocalTime.

java.time.ZonedDateTime : Il combine la classe LocalDateTime avec les informations de zone fournies dans la classe ZoneId. Il représente un horodatage complet ainsi que des informations sur le fuseau horaire.

java.time.OffsetTime : Il gère l'heure avec un décalage de fuseau horaire correspondant par rapport à Greenwich/UTC, sans identifiant de fuseau horaire.

java.time.OffsetDateTime : Il gère une date et une heure avec un décalage de fuseau horaire correspondant par rapport à Greenwich/UTC, sans identifiant de fuseau horaire.

java.time.Clock : Il permet d'accéder à l'instant, à la date et à l'heure actuels dans n'importe quel fuseau horaire donné. Bien que l'utilisation de la classe Clock soit facultative, cette fonctionnalité nous permet de tester votre code pour d'autres fuseaux horaires, ou en utilisant une horloge fixe, où l'heure ne change pas.

java.time.Instant : Il représente le début d'une nanoseconde sur la chronologie (depuis EPOCH) et est utile pour générer un horodatage pour représenter le temps machine. Un instant qui se produit avant l’époque a une valeur négative, et un instant qui se produit après l’époque a une valeur positive.

java.time.Durée : Différence entre deux instants et mesurée en secondes ou nanosecondes et n'utilise pas de constructions basées sur la date telles que les années, les mois et les jours, bien que la classe fournisse des méthodes qui convertissent en jours, heures et minutes.

java.time.Période : Il est utilisé pour définir la différence entre les dates dans les valeurs basées sur la date (années, mois, jours).

java.time.ZoneId : Il indique un identifiant de fuseau horaire et fournit des règles de conversion entre un Instant et un LocalDateTime.

java.time.ZoneOffset : Il décrit un décalage horaire par rapport à l'heure de Greenwich/UTC.

java.time.format.DateTimeFormatter : Il propose différents formateurs prédéfinis, ou nous pouvons définir le nôtre. Il dispose d'une méthode parse() ou format() pour analyser et formater les valeurs de date et d'heure.