Sobes.tech
Junior

O que é ZonedDateTime?

sobes.tech IA

Resposta da IA

ZonedDateTime — é uma classe do pacote java.time que representa uma data e hora com um deslocamento correto desde UTC* e a zona horária associada. Ele leva em consideração as regras de mudança para o horário de verão e outras particularidades da zona.

Ao contrário de OffsetDateTime, que armazena apenas o diferença de deslocamento do UTC, ZonedDateTime mantém uma referência a um objeto ZoneId, que representa a zona horária, permitindo realizar operações aritméticas com o tempo considerando as mudanças de horário ao longo do ano.

Características principais:

  • Combinação: Une data, hora e zona horária.
  • Precisão: Considera as regras de mudança para o horário de verão (DST) e outras alterações na zona.
  • Imutável: Os objetos ZonedDateTime são imutáveis, assim como outras classes de java.time.

Exemplo de criação:

// Criar um ZonedDateTime para um momento específico em uma zona específica
ZonedDateTime dateTimeInLondon = ZonedDateTime.of(2023, 10, 26, 10, 30, 0, 0, ZoneId.of("Europe/London"));
System.out.println(dateTimeInLondon);

// Obter o ZonedDateTime atual na zona do sistema
ZonedDateTime now = ZonedDateTime.now();
System.out.println(now);

Aplicações:

  • Representar eventos vinculados a um local e tempo específicos (por exemplo, o horário de início de um concerto numa cidade específica).
  • Realizar cálculos entre pontos no tempo em diferentes fusos horários, considerando as regras de DST.
  • Trabalhar com sistemas externos ou bases de dados que requerem a indicação da zona horária.

Comparação com outras classes:

Classe Data Hora Deslocamento do UTC Zona horária Considera DST
LocalDateTime Sim Sim Não Não Não
OffsetDateTime Sim Sim Sim Não Parcialmente
ZonedDateTime Sim Sim Sim Sim Sim