"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 SimpleDateFormat analisa incorretamente “AAAA-MM-dd HH:mm”?

Por que SimpleDateFormat analisa incorretamente “AAAA-MM-dd HH:mm”?

Publicado em 2024-12-21
Navegar:591

Why Does SimpleDateFormat Incorrectly Parse \

SimpleDateFormat analisa "AAAA-MM-dd HH:mm" incorretamente

Ao tentar analisar uma string no formato "AAAA-MM -dd HH:mm" para uma data, alguns desenvolvedores encontram resultados de data inesperados. Isso ocorre ao usar a classe SimpleDateFormat com a configuração tolerante definida como falsa.

O trecho de código a seguir demonstra o problema:

Date newDate = null;
String dateTime = "2013-03-18 08:30";
SimpleDateFormat df = new SimpleDateFormat("YYYY-MM-dd HH:mm", Locale.ENGLISH);
df.setLenient(false);
try {
    newDate = df.parse(dateTime);
} catch (ParseException e) {
    throw new InvalidInputException("Invalid date input.");
}

Este código produz uma data incorreta:

Sun Dec 30 08:30:00 EST 2012 (wrong)

Para resolver esse problema, verifique se o formato do ano especificado no padrão SimpleDateFormat está "yyyy" minúsculo em vez de maiúsculo "YYYY."

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.ENGLISH);

Ao fazer esse ajuste, o código será analisado a string "AAAA-MM-dd HH:mm" corretamente. Consulte a documentação do SimpleDateFormat para mais informações.

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