Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

309
Visualizações
¿Cómo puedo validar una fecha local dentro del horario de verano?

Mar 12, 2017 02:39:00 "America/Chicago" no existe. Cuando configuro la fecha y la hora en este valor, no falla. La hora se establece en el Mar 12, 2017 03:39:00 una hora más tarde. ¿Cómo puedo ser notificado de que este tiempo no existe. Así es como el tiempo salta hacia adelante

 01:59:59 3:00:00

Como puede ver, 02:39:00 nunca existirá en esta fecha.

Aquí está el código que estoy usando

 package com.company; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZoneOffset; import java.time.ZonedDateTime; public class Main { public static void main(String[] args) { ZoneId zoneId = ZoneId.of("America/Chicago"); ZonedDateTime dateTimeStart = ZonedDateTime.of(2017, 1, 1, 15, 39, 0, 0, ZoneId.of("America/Chicago")); ZonedDateTime dateTimeStartUtc = dateTimeStart.withZoneSameInstant(ZoneOffset.UTC); ZoneId zoneIdDst = ZoneId.of("America/Chicago"); ZonedDateTime dateTimeStartDst = ZonedDateTime.of(2017, 3, 12, 2, 39, 0, 0, ZoneId.of("America/Chicago")); ZonedDateTime dateTimeStartUtcDst = dateTimeStart.withZoneSameInstant(ZoneOffset.UTC); int y = 90; } }
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Su muestra no genera una excepción porque ZonedDateTime.of(..) ajusta la fecha y la hora. Los estados javadoc

Esto crea una fecha y hora dividida en zonas que coincide lo más posible con la fecha y hora local de entrada. Las reglas de zona horaria, como el horario de verano, significan que no todas las fechas y horas locales son válidas para la zona especificada, por lo que se puede ajustar la fecha y hora locales.

Puede usar ZonedDateTime#ofStrict(LocalDateTime, ZoneOffset, ZoneId) para realizar la validación.

Obtiene una instancia de ZonedDateTime validando estrictamente la combinación de fecha y hora local, desplazamiento e ID de zona.

Esto crea una fecha y hora dividida en zonas que garantiza que la compensación sea válida para la fecha y hora local de acuerdo con las reglas de la zona especificada. Si el desplazamiento no es válido, se lanza una excepción.

Primero deberá construir un LocalDateTime . Luego obtendrá el ZoneOffset para su ZoneId para esa fecha y hora local. Luego puede proporcionar los tres a ofStrict .

Por ejemplo,

 ZoneId zoneId = ZoneId.of("America/Chicago"); LocalDateTime ldt = LocalDateTime.of(2017, 3, 12, 2, 39, 0, 0); ZoneOffset zoneOffset = zoneId.getRules().getOffset(ldt); ZonedDateTime zdt = ZonedDateTime.ofStrict(ldt, zoneOffset, zoneId);

tiraría

 Exception in thread "main" java.time.DateTimeException: LocalDateTime '2017-03-12T02:39' does not exist in zone 'America/Chicago' due to a gap in the local time-line, typically caused by daylight savings at java.time.ZonedDateTime.ofStrict(ZonedDateTime.java:484)
over 4 years ago · Santiago Trujillo Relatório

0

Aquí una validación sin lanzar excepciones. Solo necesita preguntar a las reglas de la zona si un LocalDateTime es válido dentro de una zona horaria determinada:

 public static boolean isValid(LocalDateTime ldt, ZoneId zoneId) { return !zoneId.getRules().getValidOffsets(ldt).isEmpty(); }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda