Maison >Java >javaDidacticiel >Comment puis-je convertir java.util.Date en Instant, OffsetDateTime ou ZonedDateTime de java.time ?

Comment puis-je convertir java.util.Date en Instant, OffsetDateTime ou ZonedDateTime de java.time ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-03 11:24:29725parcourir

How do I convert java.util.Date to java.time's Instant, OffsetDateTime, or ZonedDateTime?

Convertir java.util.Date en Instant, OffsetDateTime ou ZonedDateTime de java.time

Alors que nous migrons vers le framework java.time moderne , il est essentiel de savoir comment convertir les objets java.util.Date hérités en types java.time appropriés. Voici un aperçu des équivalences :

java.util.Date vers Instant

Les deux représentent un moment en UTC, la conversion est donc simple :

<code class="java">Instant instant = myUtilDate.toInstant();

java.util.Date myUtilDate = java.util.Date.from(instant);</code>

java.util.Date vers OffsetDateTime ou ZonedDateTime de java.time

Étant donné que ces types intègrent des informations de fuseau horaire, il est nécessaire d'extraire le fuseau de l'ancienne date :

<code class="java">// If the legacy date is a GregorianCalendar (which can hold time zone info)
if (myUtilCalendar instanceof GregorianCalendar) {
    GregorianCalendar gregCal = (GregorianCalendar) myUtilCalendar;
    ZonedDateTime zdt = gregCal.toZonedDateTime(); // ZonedDateTime with time zone

    java.util.Calendar myUtilCalendar = java.util.GregorianCalendar.from(zdt);
}</code>

Mappages de conversion supplémentaires

Legacy Type java.time Equivalent Additional Notes
java.util.Calendar Instant Converts to the start of the day in UTC
java.util.GregorianCalendar ZonedDateTime Retains time zone information
java.util.LocalDate ZonedDateTime Requires a time zone to determine the date
java.util.LocalTime Instant Converts to the start of the day in UTC
java.util.LocalDateTime ZonedDateTime Requires a time zone to determine the date and time

Considérations importantes

  • Conversion d'un java.util.Date en un Le type java.time peut entraîner une perte de précision car la résolution en nanosecondes n'est pas prise en charge par les classes héritées.
  • Lors de la conversion en OffsetDateTime ou ZonedDateTime, les informations de fuseau horaire doivent être préservées pour garantir une interprétation correcte.
  • Il est fortement recommandé d'utiliser les types java.time dans le nouveau code pour une précision et une cohérence améliorées.

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!

Déclaration:
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