restar manejo instant initialize fechas fecha declara dates crear como java datetime java-8 java-time

manejo - No se puede analizar la cadena a LocalDate(Java 8)



manejo de fecha java 8 (2)

La respuesta a la pregunta es usar ''y'' no ''Y''.

Para explicar el mensaje de error, vamos a descomponerlo:

Unable to obtain LocalDate from TemporalAccessor

Esto significa que no puede crear una LocalDate (lo que se solicitó) desde un LocalDate TemporalAccessor (la interfaz de bajo nivel que proporciona acceso similar a un hashmap a los campos de fecha / hora).

of type java.time.format.Parsed

Esto significa que el objeto pasado al método fue de tipo java.time.format.Parsed . Este es el tipo de salida estándar de análisis y contiene toda la información que se analizó.

{DayOfMonth=1, MonthOfYear=7, WeekBasedYear[WeekFields[MONDAY,4]]=2015},ISO

Esta es la forma toString() del objeto java.time.format.Parsed que resultó del análisis. Es decir que se analizaron cuatro cosas:

  • DayOfMonth=1 , el día del mes analizado con valor de 1
  • MonthOfYear=7 , el mes del año analizado con un valor de 7
  • WeekBasedYear[WeekFields[MONDAY,4]]=2015 , el año semanal analizado con el valor de 2015
  • ISO , que es el sistema de calendario ISO (un valor predeterminado)

Dado que no es posible producir una LocalDate partir de la combinación DayOfMonth + MonthOfYear + WeekBasedYear, se lanza una excepción.

Tenga en cuenta que la parte [WeekFields[MONDAY,4]] refiere al hecho de que hay muchas maneras diferentes de definir una semana, en las semanas de EE. UU. Inician el domingo, pero en la norma ISO y la UE comienzan el lunes.

Mi entrada es una representación de cadena de una fecha en el formato "01-07-2015" para el 1 de julio de 2015. Estoy tratando de analizar esto en una variable java.time.LocalDate :

final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-YYYY"); final String input = "01-07-2015"; final LocalDate localDate = LocalDate.parse(input, DATE_FORMAT);

Según el DateTimeFormatter JavaDoc , espero que esto funcione. Sin embargo, me saludan con un mensaje muy amigable y útil:

Causado por: java.time.DateTimeException: No se puede obtener LocalDate de TemporalAccessor: {DayOfMonth = 1, MonthOfYear = 7, WeekBasedYear [WeekFields [MONDAY, 4]] = 2015}, ISO de tipo java.time.format.Parsed

Realmente no entiendo lo que me dice esta excepción. ¿Alguien puede explicarme qué está mal?


Por año tienes que usar la minúscula y:

final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy");

Y mayúscula se utiliza para weekyear. Vea el javadoc de DateTimeFormatter para más detalles.