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.
- classe java.time.LocalDate
- classe java.time.LocalTime
- classe java.time.LocalDateTime
- classe java.time.MonthDay
- classe java.time.OffsetTime
- classe java.time.OffsetDateTime
- classe java.time.Clock
- classe java.time.ZonedDateTime
- classe java.time.ZoneId
- classe java.time.ZoneOffset
- classe java.time.Year
- classe java.time.YearMonth
- classe java.time.Period
- classe java.time.Duration
- classe java.time.Instant
- java.time.DayOfWeek énumération
- java.time.Month énumération
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.
- classe java.util.Date
- classe java.sql.Date
- classe java.util.Calendar
- classe java.util.GregorianCalendar
- classe java.util.TimeZone
- classe java.sql.Time
- classe java.sql.Timestamp
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
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.