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

525
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 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