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'".
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