"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué el análisis de una cadena de fecha en Java genera un "carácter de patrón ilegal 'T'"?

¿Por qué el análisis de una cadena de fecha en Java genera un "carácter de patrón ilegal 'T'"?

Publicado el 2024-12-23
Navegar:131

Why Does Parsing a Date String in Java Throw

Carácter de patrón ilegal 'T' al analizar una cadena de fecha en java.util.Date

Analizando una cadena de fecha en java.util. El objeto de fecha requiere un patrón que se adhiera a reglas específicas. Un patrón común es "yyyy-MM-ddThh:mm:ssZ", que representa fechas en formato ISO 8601.

Problema:
Cuando se utiliza el patrón especificado, se produce una excepción. lanzado con el mensaje "java.lang.IllegalArgumentException: carácter de patrón ilegal 'T'."

Motivo:
La 'T' en el patrón representa un separador entre los componentes de fecha y hora. Sin embargo, en SimpleDateFormat de Java, el carácter 'T' debe contener comillas simples en cada lado para que se reconozca correctamente.

Solución 1: escape 'T' en el patrón
Para resolver el problema usando el patrón original, escape el carácter 'T' de la siguiente manera:

String pattern = "yyyy-MM-dd'T'hh:mm:ssZ";

Solución 2: usar ISO_8601_24H_FULL_FORMAT
Como alternativa, puede usar la constante ISO_8601_24H_FULL_FORMAT predefinida proporcionada por Q2597083 clase:

String pattern = Q2597083.ISO_8601_24H_FULL_FORMAT;

Para Java 8 y superior:
Para Java 8 y superior, se recomienda utilizar la clase DateTimeFormatter en lugar de SimpleDateFormat e Instantáneo en lugar de Fecha. Aquí hay un ejemplo:

import java.time.Instant;
import java.time.format.DateTimeFormatter;

String dateString = "2010-10-02T12:23:23Z";
DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME;
Instant d = Instant.parse(dateString);
System.out.println(d.getYear());

Al utilizar estas soluciones, puede analizar con éxito cadenas de fechas en formato ISO 8601 sin encontrar la excepción "Carácter de patrón ilegal 'T'".

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3