Por que Java SimpledateFormat (). Parse () está imprimindo formato estranho?
-
21-09-2019 - |
Pergunta
Minha entrada é formada como a seguinte:
3/4/2010 10:40:01 AM
3/4/2010 10:38:31 AM
Meu código é:
DateFormat dateFormat = new SimpleDateFormat("dd/mm/yyyy hh:mm:ss aa");
try
{
Date today = dateFormat.parse(time);
System.out.println("Date Time : " + today);
}
catch (ParseException e)
{
e.printStackTrace();
}
A saída é:
Sun Jan 03 10:38:31 AST 2010
Sun Jan 03 10:40:01 AST 2010
Não tenho certeza de onde o dia (sol) veio? ou (AST)? E por que a data está errada? Eu só queria manter o mesmo formato do original Corda data e transformá -lo em um Encontro objeto.
Estou usando o NetBeans 6.8 Mac versão.
Solução
Se você deseja imprimir a data no formato original, use o método do formato:
System.out.println("Date Time : "+ dateFormat.format(today));
O formato "estranho" vem da implementação da ToString da Date, diz o Javadoc:Converte este objeto de data em uma string do formulário:
Dow Mon DD HH: MM: SS ZZZ AA
"I just wanted to keep the same format of the original String date and make it into a Date object."
O objeto Data destina -se a representar um instante específico no tempo, você não pode manter o formato da string original nela, é por isso que temos a classe DateFormat.
Outras dicas
Deve ser mm, não mm. O minúsculo MM é por minutos, não meses.
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss aa");
MM
, não mm
por meses. Você está usando mm
Duas - e logicamente, são as mesmas coisas - minutos.
A resposta é simples. Você exibiu o valor DAT.ToString () de hoje e não da versão DateFormat pretendida. O que você precisa é:
System.out.println("Date Time : " + dateFormat.format(today) );
Imprimir a data de saída usando o System.out.println () resulta no para sequenciar() método sendo chamado no objeto Data.
A sequência do formato usada em tostring () é o que está causando o dia da semana e o fuso horário aparecer na saída.
Isso está à parte do erro de análise apontado por Duffy.