Por que isso não pode ser analisado nesta string de data?
-
25-09-2019 - |
Pergunta
O SimpleDateFormat:
SimpleDateFormat pdf = new SimpleDateFormat("MM dd yyyy hh:mm:ss:SSSaa");
A exceção jogada por pdf.parse("Mar 30 2010 5:27:40:140PM");
:
java.text.ParseException: Unparseable date: "Mar 30 2010 5:27:40:140PM"
Alguma ideia?
Editar: Obrigado pelas respostas rápidas. Vocês todos estavam corretos, eu apenas perdi essa frase -chave nos documentos do SimpleDateFormat - provavelmente deveria chamá -lo um dia.
Solução
A partir de SimpledateFormat javadocs:
Mês: Se o número de letras padrão for 3 ou mais, o mês será interpretado como texto; Caso contrário, é interpretado como um número.
Tente usar o padrão como "mmm dd yyyy"
Outras dicas
Primeiro, meses de três custos devem ser representados por MMM
. Segundo, as duas horas de dígitos devem ser representadas por h
. Terceiro, Mar
parece ser inglês, você precisará fornecer um Locale.ENGLISH
, senão ele não funcionará corretamente em máquinas com um local padrão padrão.
Os seguintes trabalhos:
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd yyyy h:mm:ss:SSSa", Locale.ENGLISH);
System.out.println(sdf.parse("Mar 30 2010 5:27:40:140PM"));
Resultado (estou no GMT-4 sem DST):
Tue Mar 30 17:27:40 BOT 2010
Veja também o java.text.SimpleDateFormat
Javadoc.
Por que você chamou pdf
está além de mim, então eu o renomeei sdf
;)
MM significa Mês Numérico. Use mmm.