Maison >Java >javaDidacticiel >Comment puis-je convertir java.util.Date en Instant, OffsetDateTime ou ZonedDateTime de java.time ?
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
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!