Maison > Java > javaDidacticiel > Comment convertir entre java.time.LocalDateTime et java.util.Date ?

Comment convertir entre java.time.LocalDateTime et java.util.Date ?

Linda Hamilton
Libérer: 2024-11-13 02:53:02
original
265 Les gens l'ont consulté

How to Convert Between java.time.LocalDateTime and java.util.Date?

Conversion entre java.time.LocalDateTime et java.util.Date

Avec l'introduction par Java 8 du package java.time, les développeurs ont adopté sa nouvelle API pour la gestion date et heure. Parmi ses classes, LocalDateTime contient une valeur de date avec heure indépendante du fuseau horaire.

Cependant, le code existant s'appuie souvent sur la classe java.util.Date. Lors de l'intégration d'anciennes et de nouvelles bases de code, la conversion entre ces deux classes devient nécessaire.

Approche de conversion :

De java.util.Date à LocalDateTime :

  1. Convertissez le java.util.Date en un Instant à l'aide de la méthode toInstant().
  2. Spécifiez un fuseau horaire à l'aide de ZoneId.systemDefault() pour créer un LocalDateTime via ofInstant( ).

Code :

Date in = new Date();
LocalDateTime ldt = LocalDateTime.ofInstant(in.toInstant(), ZoneId.systemDefault());
Copier après la connexion

De LocalDateTime à java.util.Date :

  1. Utilisez atZone(ZoneId) pour convertir LocalDateTime en ZonedDateTime.
  2. Convertissez le ZonedDateTime en Instant à l'aide de toInstant(), puis en java.util.Date à l'aide de Date.from().

Code :

LocalDateTime ldt = ...
ZonedDateTime zdt = ldt.atZone(ZoneId.systemDefault());
Date output = Date.from(zdt.toInstant());
Copier après la connexion

Remarque sur l'heure d'été (DST) :

Conversion de LocalDateTime en java.util .Date via ZonedDateTime peut introduire un comportement inattendu en raison de l'heure d'été. Certaines valeurs LocalDateTime peuvent ne pas exister ou apparaître deux fois lors des transitions DST. Reportez-vous au Javadoc pour atZone(ZoneId) pour plus de détails.

Considérations supplémentaires :

  • java.util.Date représente un instant sur la chronologie, tandis qu'Instant dans java.time.* représente un instant sans fuseau horaire.
  • La conversion entre LocalDateTime et java.util.Date peut entraîner des instants différents en raison de divergences dans les systèmes de calendrier (julien contre grégorien) avant 1582. .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal