Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

522
Views
Analizando LocalDate pero obteniendo DateTimeParseException; dd-MMM-uuuu

Estoy tratando de convertir una String a LocalDate usando DateTimeFormatter , pero recibo una excepción:

java.time.format.DateTimeParseException : el texto ' 2021-10-31 ' no se pudo analizar en el índice 5

mi codigo es

 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MMM-uuuu"); String text = "2021-10-31"; LocalDate date = LocalDate.parse(text, formatter);

Estoy tratando de convertir de la fecha de entrada 2021-10-31 al 31-Oct-2021 .

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

¿Qué ocurre?

¿Qué estoy haciendo mal en mi código?

Su código especifica el patrón dd-MMM-uuuu , pero intenta analizar el texto 2021-10-31 que no se ajusta a este patrón en absoluto.

El patrón correcto para su cadena sería yyyy-MM-dd . Consulte la documentación del formateador para obtener más información.

En particular, observe el orden de los días y meses dd-MMM vs MM-dd . Y la cantidad de meses MMM . Una cadena que coincida con su patrón actual sería 31-Oct-2021 .


Cambiar patrón

De los comentarios:

mi fecha de entrada es - 2021-10-31 necesita convertirse en - 31-oct-2021

Puede cambiar fácilmente el patrón de la fecha por:

  1. Análisis de la fecha de entrada usando el patrón yyyy-MM-dd
  2. y luego vuelva a formatearlo en cadena usando el patrón dd-MMM-yyyy .

En código, eso es:

 DateTimeFormatter inputPattern = DateTimeFormatter.ofPattern("yyyy-MM-dd"); DateTimeFormatter outputPattern = DateTimeFormatter.ofPattern("dd-MMM-yyyy"); String input = "2021-10-31"; LocalDate date = LocalDate.parse(text, inputPattern); String output = date.format(outputPattern);
over 4 years ago · Santiago Trujillo Report

0

No necesita usar un DateTimeFormatter para analizar su cadena de entrada

La API de fecha y hora moderna se basa en ISO 8601 y no requiere el uso de un objeto DateTimeFormatter explícitamente siempre que la cadena de fecha y hora cumpla con los estándares ISO 8601. Tenga en cuenta que su cadena de fecha ya está en formato ISO 8601.

Necesita un DateTimeFormatter solo para formatear el LocalDate obtenido al analizar la cadena de entrada.

Manifestación:

 import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.Locale; public class Main { public static void main(String[] args) { LocalDate date = LocalDate.parse("2021-10-31"); System.out.println(date); DateTimeFormatter dtfOutput = DateTimeFormatter.ofPattern("dd-MMM-uuuu", Locale.ENGLISH); System.out.println(date.format(dtfOutput)); } }

Producción:

 2021-10-31 31-Oct-2021

DEMOSTRACIÓN EN LÍNEA

Asegúrese de usar Locale cuando use DateTimeFormatter . Marque Nunca use SimpleDateFormat o DateTimeFormatter sin una configuración regional para obtener más información al respecto.

Obtenga más información sobre la API de fecha y hora moderna * de Trail: Date Time .


* Si está trabajando para un proyecto de Android y su nivel de API de Android aún no cumple con Java-8, verifique las API de Java 8+ disponibles a través de desugaring . Tenga en cuenta que Android 8.0 Oreo ya brinda soporte para java.time . Consulte esta respuesta y esta respuesta para aprender a usar la API java.time con JDBC.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!