"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-11-06
Parcourir:937

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 to Instant

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

Instant instant = myUtilDate.toInstant();

java.util.Date myUtilDate = java.util.Date.from(instant);

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

Depuis ces les types intègrent des informations de fuseau horaire, l'extraction du fuseau de la date héritée est nécessaire :

// 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);
}

Mappages de conversion supplémentaires

Type d'héritageéquivalent java.timeSupplémentaire Notes
java.util.CalendarInstantConvertit en début de journée en UTC
java.util.GregorianCalendarZonedDateTimeConserve les informations de fuseau horaire
java.util.LocalDate ZonedDateTimeNécessite un fuseau horaire pour déterminer la date
java.util.LocalTimeInstantConvertit en le début de la journée en UTC
java.util.LocalDateTimeZonedDateTimeNécessite un fuseau horaire pour déterminer la date et l'heure

Considérations importantes

  • La conversion d'un type java.util.Date en un 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 un nouveau code pour une précision et une cohérence améliorées.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3