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