36. Travailler avec les dates et l'API java.time

La manipulation des dates et des heures est un besoin courant dans de nombreuses applications Java. Depuis la sortie de Java 8, l'API java.time est devenue le choix standard pour travailler avec les dates et les heures de manière plus simple et moins sujette aux erreurs. Cette API a été inspirée par la bibliothèque Joda-Time et est connue pour sa conception immuable et fluide. Explorons les principaux aspects de cette API et comment vous pouvez l'utiliser pour effectuer des opérations de date complexes.

Présentation de l'API java.time

L'API java.time comprend une série de classes conçues pour traiter des concepts temporels tels que les instants, les durées, les dates, les heures, les fuseaux horaires et les périodes. Les classes sont immuables et thread-safe, ce qui signifie que vous pouvez les utiliser sans soucis dans des environnements multithread.

Cours fondamentaux

  • LocalDate : représente une date sans heure ni fuseau horaire (par exemple, 2023-03-15).
  • LocalTime : représente une heure sans date ni fuseau horaire (par exemple, 10:15:30).
  • LocalDateTime : combine LocalDate et LocalTime, représentant une date et une heure sans fuseau horaire.
  • ZonedDateTime : représente une date et une heure avec le fuseau horaire.
  • Instantané : représente un moment spécifique, généralement utilisé pour marquer des événements dans les applications.
  • Durée : représente une durée en termes de secondes et de nanosecondes.
  • Période : représente une durée en termes d'années, de mois et de jours.

Manipulation des dates

La manipulation des dates est facilitée par les classes LocalDate, LocalTime et LocalDateTime. Vous pouvez créer des instances de ces classes à l'aide de leurs méthodes de fabrique statiques, telles que now(), of() et parse(). Une fois que vous avez une instance, vous pouvez modifier ses propriétés en utilisant des méthodes comme plusDays(), minusWeeks(), withYear(), etc. .

LocalDate date = LocalDate.now(); LocalDate demain = date.plusDays(1); LocalDate lastMonthSameDay = date.minusMonths(1); LocalDate in2025 = date.withYear(2025);

Formatage et analyse des dates

Le formatage et l'analyse des dates sont principalement effectués par la classe DateTimeFormatter. Vous pouvez utiliser des formateurs prédéfinis ou créer les vôtres pour représenter les dates et les heures selon vos besoins.

Formatter DateTimeFormatter = DateTimeFormatter.ofPattern("jj/MM/aaaa"); Chaîne formattedDate = date.format(formatter); // "15/03/2023" LocalDate dateFromString = LocalDate.parse("15/03/2023", formateur);

Travailler avec les fuseaux horaires

La classe ZonedDateTime est utilisée pour gérer les dates et heures dans différents fuseaux horaires. Vous pouvez convertir un LocalDateTime en un ZonedDateTime en appliquant un fuseau horaire spécifique à l'aide de la méthode atZone(). Il est également possible d'ajuster un ZonedDateTime sur un autre fuseau horaire avec la méthode withZoneSameInstant().

ZoneId newYorkZoneId = ZoneId.of("Amérique/New_York"); ZonedDateTime zonedDateTime = LocalDateTime.now().atZone(newYorkZoneId); ZonedDateTime zonedDateTimeInTokyo = zonedDateTime.withZoneSameInstant(ZoneId.of("Asie/Tokyo"));

Comparer les dates et les heures

Comparer des dates et des heures est une opération courante, et l'API java.time propose des méthodes telles que isBefore(), isAfter() et isEqual() pour faciliter ces comparaisons.

boolean isAfter = demain.isAfter(date); booléen isBefore = lastMonthSameDay.isBefore(date); booléen isEqual = in2025.isEqual(date.withYear(2025));

Intervalles de temps

Les classes Duration et Period vous permettent de représenter et de manipuler des intervalles de temps. Durée est utilisé pour des durées en heures, minutes, secondes et nanosecondes, tandis que Période est utilisé pour les jours, mois et années.

Durée durée = Duration.between(LocalTime.NOON, LocalTime.MIDNIGHT); Période = Period.between(LocalDate.of(2023, Month.JANUARY, 1), LocalDate.of(2023, Month.DECEMBER, 31));

API d'ajustement temporel

L'API java.time inclut également des ajusteurs temporels qui vous permettent d'effectuer des opérations complexes de manière concise. Par exemple, vous pouvez rechercher le premier jour du mois suivant, le jour ouvrable suivant ou le dernier jour de l'année à l'aide d'ajusteurs temporels.

LocalDate firstDayOfNextMonth = date.with(TemporalAdjusters.firstDayOfNextMonth()); LocalDate nextWednesday = date.with(TemporalAdjusters.next(DayOfWeek.WEDNESDAY)); LocalDate lastDayOfYear = date.with(TemporalAdjusters.lastDayOfYear());

Conclusion

L'API java.time est un outil puissant et flexible pour travailler avec les dates et les heures en Java. Avec sa conception immuable et thread-safe, il offre un moyen fiable et efficace de gérer des concepts temporels complexes dans vos applications. En maîtrisant cette API, vous serez en mesure de relever facilement n'importe quel défi lié à la date et à l'heure.

Répondez maintenant à l’exercice sur le contenu :

Laquelle des affirmations suivantes concernant l'API « java.time » est vraie ?

Tu as raison! Félicitations, passez maintenant à la page suivante

Vous avez raté! Essayer à nouveau.

Image de l'article Internationalisation et localisation en Java

Page suivante de lebook gratuit :

148Internationalisation et localisation en Java

0 minutes

Obtenez votre certificat pour ce cours gratuitement ! en téléchargeant lapplication Cursa et en lisant lebook qui sy trouve. Disponible sur Google Play ou App Store !

Get it on Google Play Get it on App Store

+ 6,5 millions
d'étudiants

Certificat gratuit et
valide avec QR Code

48 mille exercices
gratuits

Note de 4,8/5 dans les
magasins d'applications

Cours gratuits en
vidéo, audio et texte