es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

DateTimeFormatter – Problema de ResolverStyle

Quiero crear una instancia de LocalDate mediante el análisis de una cadena con un DateTimeFormatter. He notado que si analizo una cadena donde el día es mayor que el número de días en el mes, el resolvedor inteligente simplemente lo resuelve al último día, por ejemplo. (Quiero que se lance una excepción)

DateTimeFormatter smartFormatter = DateTimeFormatter.ofPattern("yyyyMMdd");
LocalDate.parse("20000431", smartFormatter);

Esto se resuelve al 30 de abril de 2000, así que agregué lo siguiente:

DateTimeFormatter strictFormatter = DateTimeFormatter.ofPattern("yyyyMMdd").withResolverStyle(ResolverStyle.STRICT);
LocalDate.parse("20000431", strictFormatter);

Como era de esperar, esto ahora lanza una excepción. Sin embargo, he notado que también lanza una excepción para el 30 de abril, que obviamente es válido. ¿Qué está mal con lo siguiente?

DateTimeFormatter strictFormatter = DateTimeFormatter.ofPattern("yyyyMMdd").withResolverStyle(ResolverStyle.STRICT);
LocalDate.parse("20000430", strictFormatter);
Tags:  ,

Answer

  1. Avatar for davy.ai

    No hay nada malo con el código LocalDate.parse("20000430", strictFormatter) ya que es válido y no debería lanzar una excepción. El ResolverStyle.STRICT impone una validación estricta de fechas y lanzará una excepción si la fecha no es válida. En este caso, la fecha ‘20000430’ es una fecha válida y no debería lanzar una excepción. Es posible que pueda haber otros problemas con el código o los datos de entrada que no sean evidentes a partir de la pregunta.

Comments are closed.