"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como faço para converter java.util.Date em Instant, OffsetDateTime ou ZonedDateTime de java.time?

Como faço para converter java.util.Date em Instant, OffsetDateTime ou ZonedDateTime de java.time?

Publicado em 2024-11-06
Navegar:518

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

Converta java.util.Date em Instant, OffsetDateTime ou ZonedDateTime de java.time

À medida que migramos para a estrutura java.time moderna , é essencial saber como converter objetos java.util.Date legados nos tipos java.time apropriados. Aqui está um resumo das equivalências:

java.util.Date to Instant

Ambos representam um momento no UTC, então a conversão é direta:

Instant instant = myUtilDate.toInstant();

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

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

Desde estes incorporam informações de fuso horário, é necessário extrair o fuso da data herdada:

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

Mapeamentos de conversão adicionais

Tipo legadojava.time equivalenteAdicional Notas
java.util.CalendarInstantConverte para o início do dia em UTC
java.util.GregorianCalendarZonedDateTimeRetém informações de fuso horário
java.util .LocalDateZonedDateTimeRequer um fuso horário para determinar o data
java.util.LocalTimeInstantConverte para o início do dia em UTC
java.util.LocalDateTimeZonedDateTimeRequer um fuso horário para determinar a data e time

Considerações importantes

  • A conversão de um tipo java.util.Date para um tipo java.time pode resultar em perda de precisão, pois a resolução de nanossegundos não é suportada pelas classes herdadas.
  • Ao converter para OffsetDateTime ou ZonedDateTime, as informações de fuso horário devem ser preservadas para garantir interpretação correta.
  • É altamente recomendado usar tipos java.time em novo código para maior precisão e consistência.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3