Solucione Java.Text.ParseException: error de fecha no analizable en Java
Este tutorial demuestra el error java.text.ParseException: fecha no analizable
en Java.
Solucione el error java.text.ParseException: fecha no analizable
en Java
El error java.text.ParseException: fecha no analizable
generalmente ocurre al usar la clase SimpleDateFormat
en Java. Esta clase se utiliza para formatear la fecha en Java.
La mayoría de las veces, el error java.text.ParseException: fecha no analizable
ocurre cuando intentamos convertir la fecha de la cadena en otro formato de fecha deseado. Hay principalmente tres problemas con la cadena de fecha que causan este error:
Cuando se utiliza el formato de fecha incorrecto
El formato de fecha es muy importante al analizar la fecha en el formato deseado. La fecha distingue entre mayúsculas y minúsculas en Java, por lo que todos los elementos deben estar correctos en mayúsculas y minúsculas.
La siguiente tabla muestra la sintaxis correcta para cada elemento de fecha:
Nombre | Sintaxis |
---|---|
Day |
dd |
Month |
MM |
Year |
yyyy |
Hour |
HH |
Minute |
mm |
Second |
ss |
Según la tabla anterior, el formato correcto de fecha en Java será:
SimpleDateFormat DemoDateFormat = new SimpleDateFormat("dd-MM-YYYY HH:mm:ss");
Cuando se utiliza la localización incorrecta
La localización es otro factor importante al escribir la fecha en Java. Si ponemos la fecha en una configuración regional en inglés e intentamos analizarla en otro sistema que no sea inglés, arrojará el error java.text.ParseException: fecha no analizable
.
Necesitamos especificar la configuración regional en el formato de fecha para que no haya problemas al analizar los datos en otros sistemas. Porque si no especificamos, la JVM utilizará la configuración regional predeterminada.
Este es el ejemplo de la sintaxis local:
SimpleDateFormat DemoDateFormat = new SimpleDateFormat("dd-MM-YYYY HH:mm:ss", Locale.English);
Cuando se usa la zona horaria incorrecta
Usar la zona horaria correcta también es importante al escribir el formato de fecha en Java. La clase SimpleDateFormat
está programada para usar la zona horaria predeterminada, la zona horaria actual de la JVM, si no se especifica en el formato.
La zona horaria de JVM puede cambiar según la ubicación del usuario, por lo que si no configuramos la zona horaria en este caso, habrá un error como un formato incorrecto o un error inesperado.
Aquí está la sintaxis para establecer la zona horaria en Java:
DemoDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
Probemos un ejemplo que arroja el error java.text.ParseException: fecha no analizable
en Java:
package delftstack;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Example {
public static void main(String[] arg) throws ParseException {
String DemoDate = "Tue Aug 16 12:30:10 IST 2022";
SimpleDateFormat Simple_Date_Format = new SimpleDateFormat("MMM d, yyyy HH:mm:ss");
Date Current_Date;
Current_Date = Simple_Date_Format.parse(DemoDate);
System.out.println(Current_Date);
}
}
El patrón de fecha en el código anterior no corresponde a la cadena de entrada, por eso arroja el siguiente error:
Exception in thread "main" java.text.ParseException: Unparseable date: "Tue Aug 16 12:30:10 IST 2022"
at java.base/java.text.DateFormat.parse(DateFormat.java:399)
at delftstack.Example.main(Example.java:13)
La solución con el formato de fecha correcto según la cadena dada es:
package delftstack;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class Example {
public static void main(String[] arg) throws ParseException {
String DemoDate = "Tue Aug 16 12:30:10 IST 2022";
SimpleDateFormat Simple_Date_Format =
new SimpleDateFormat("EE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
Date Current_Date;
Current_Date = Simple_Date_Format.parse(DemoDate);
System.out.println(Current_Date);
}
}
La salida para el código es:
Tue Aug 16 15:30:10 PKT 2022
Si la salida dada no se ve bien, podemos agregar otro SimpleDateFormat
y formatear la Current_Date
según nuestra elección. Ver ejemplo:
package delftstack;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class Example {
public static void main(String[] arg) throws ParseException {
String DemoDate = "Tue Aug 16 12:30:10 IST 2022";
SimpleDateFormat Simple_Date_Format =
new SimpleDateFormat("EE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
Date Current_Date;
Current_Date = Simple_Date_Format.parse(DemoDate);
SimpleDateFormat Print_Date = new SimpleDateFormat("EE MMM d, yyyy HH:mm:ss");
System.out.println(Print_Date.format(Current_Date));
}
}
El código anterior imprime la fecha en un formato más fácil de leer. Ver salida:
Tue Aug 16, 2022 15:30:10
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn FacebookArtículo relacionado - Java Error
- Arreglar Java fue iniciado por el código de salida devuelto = 1
- Arreglar JAVA_HOME no se puede determinar a partir del error de registro en R
- Arreglar java.io.IOException: No queda espacio en el dispositivo en Java
- Arreglar Java.IO.NotSerializableException en Java
- Arreglar Java.Lang.IllegalStateException de Android: no se pudo ejecutar el método de la actividad
- Arreglar Java.Lang.NoClassDefFoundError: No se pudo inicializar el error de clase