"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que a análise de uma string de data em Java gera "caractere de padrão ilegal 'T'"?

Por que a análise de uma string de data em Java gera "caractere de padrão ilegal 'T'"?

Publicado em 23/12/2024
Navegar:299

Why Does Parsing a Date String in Java Throw

Caractere de padrão ilegal 'T' ao analisar string de data para java.util.Date

Analisando uma string de data para um java.util. O objeto Date requer um padrão que siga regras específicas. Um padrão comum é "yyyy-MM-ddThh:mm:ssZ", que representa datas no formato ISO 8601.

Problema:
Ao usar o padrão especificado, uma exceção é lançada com a mensagem "java.lang.IllegalArgumentException: caractere de padrão ilegal 'T'."

Motivo:
O 'T' no padrão representa um separador entre os componentes de data e hora. No entanto, no SimpleDateFormat do Java, o caractere 'T' precisa ser escapado com aspas simples em ambos os lados para ser reconhecido corretamente.

Solução 1: Escape 'T' no padrão
Para resolver o problema usando o padrão original, escape o caractere 'T' da seguinte maneira:

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

Solução 2: Use ISO_8601_24H_FULL_FORMAT
Como alternativa, você pode usar a constante ISO_8601_24H_FULL_FORMAT predefinida fornecida pelo Q2597083 class:

String pattern = Q2597083.ISO_8601_24H_FULL_FORMAT;

Para Java 8 e superior:
Para Java 8 e superior, é recomendado usar a classe DateTimeFormatter em vez de SimpleDateFormat e Instant em vez de Date. Aqui está um exemplo:

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());

Ao usar essas soluções, você pode analisar strings de data no formato ISO 8601 com êxito sem encontrar a exceção "Caracter de padrão ilegal 'T'".

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3