Почему этот SimpleDateFormat не может проанализировать эту строку даты? - PullRequest
4 голосов
/ 09 апреля 2010

SimpleDateFormat:

SimpleDateFormat pdf = new SimpleDateFormat("MM dd yyyy hh:mm:ss:SSSaa");

Исключение, выданное pdf.parse("Mar 30 2010 5:27:40:140PM");:

java.text.ParseException: Unparseable date: "Mar 30 2010 5:27:40:140PM"

Есть идеи?


Редактировать: спасибо за быстрые ответы.Вы все были правы, я просто пропустил одно ключевое предложение в документах SimpleDateFormat - мне, наверное, стоит назвать это днем.

Ответы [ 3 ]

11 голосов
/ 09 апреля 2010

Во-первых, трехмесячные месяцы должны быть представлены MMM. Во-вторых, одно-двузначные часы должны быть представлены h. В-третьих, Mar кажется английским, вам нужно указать Locale.ENGLISH, иначе он не будет работать должным образом на машинах с другим языком по умолчанию.

Следующие работы:

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"));

Результат (я в GMT-4 без летнего времени):

Tue Mar 30 17:27:40 BOT 2010

Также см. java.text.SimpleDateFormat Javadoc .

Почему вы назвали это pdf вне меня, поэтому я переименовал его sdf;)

8 голосов
/ 09 апреля 2010

С SimpleDateFormat javadocs :

Месяц: если номер шаблона букв 3 или более, месяц интерпретируется как текст; в противном случае это интерпретируется как число.

Попробуйте использовать шаблон типа "MMM dd yyyy"

6 голосов
/ 09 апреля 2010

ММ означает числовой месяц. Используйте МММ.

...