2014-09-06 2 views
0

Когда я пытался разобрать дату на Java, обе эти строки возвращают PhaseException, проверено дважды и не знает, что происходит, пожалуйста, помогите!Ошибка синтаксического анализа даты Date

Date dateobj = new SimpleDateFormat("MMM dd, yyyy").parse("Nov 12, 1994"); 
Date timeobj = new SimpleDateFormat("hh:mm a").parse("8:20 pm"); 

Полный след:

java.text.ParseException: Unparseable date: "Nov 12, 1994" 
at java.text.DateFormat.parse(Unknown Source) 
at testTime.main(testTime.java:12) 
+0

[вы ловя или объявить, что исключение быть выброшено?] (http://docs.oracle.com/javase/tutorial/essential/exceptions/handling.html) – Makoto

+0

@Makoto нет, это исключение, объявленное Java – user2534365

+2

PhaseException не является стандартным исключением Java. Опубликовать полную трассировку стека. Кроме того, проверьте, что ваш язык - английский. Все языки не носят ноябрьские ноты. –

ответ

3

Первое, что вы код оленья кожа производит каких-либо исключений, но все-таки это всегда безопасно указать локаль

Как это

Date dateobj = new SimpleDateFormat("MMM dd, yyyy", Locale.ENGLISH) 
                  .parse("Nov 12, 1994"); 
Date timeobj = new SimpleDateFormat("hh:mm a", Locale.ENGLISH) 
                .parse("8:20 pm"); 
0

Double check the declared throws для DateFormat#parse. Он бросает то, что известно как checked exception; это означает, что даже если это исключение происходит, вы сможете восстановить его.

Вы сусло либо:

  • Объявить его выбросить (добавить throws ParseException в подписи вашего метода), или
  • Wrap выражение в try...catch блоке. Ниже приведен пример.

    Date dateobj = null; 
    Date timeobj = null; 
    try { 
        dateobj = new SimpleDateFormat("MMM dd, yyyy").parse("Nov 12, 1994"); 
        timeobj = new SimpleDateFormat("hh:mm a").parse("8:20 PM"); 
    } catch(ParseException e) { 
        e.printStackTrace(); 
    } 
    

Как она стоит с сниппета, если я либо меры предосторожности (объявление его выбросить или поймать его сам), то я не столкнуться никаких дальнейших ошибок во время выполнения.

+0

Вот что я получил java.text.ParseException: дата: не поддается синтаксическому анализу "Ноя 12, 1994" \t в java.text.DateFormat.parse (Unknown Source) \t в testTime.main (testTime.java:12) – user2534365

+0

Смешные; Я помещаю ваш код в свою IDE, и я не получаю это исключение. То есть, после того, как я обязательно обработаю исключение должным образом. – Makoto

+0

Funny: Mine не вставил весь код – user2534365

0

Благодаря JB Nizet, эта ошибка вызвана другими настройками локали, добавив локаль в SimpleDateFormat работает