2015-04-27 3 views
0

Я получаю исключение при разборе даты.java.text.ParseException: Непревзойденная дата: «2014/02/20»

Ниже приведен код:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-DD"); 
    Date d = format.parse("2014/02/20"); 
    System.out.println(d); 
+0

ваш шаблон даты отличается, а также заменить 'DD' на' dd'. [Check] (http://ideone.com/0jSVqp) – silentprogrammer

+0

инициализировать ваш форматирующий, как новый SimpleDateFormat ("yyyy/MM/dd") –

ответ

1

Ваш DateFormat не соответствует вашей строки.

Date d = format.parse("2014-02-20"); 

или

SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd"); 
+1

'DD' для дня в году (это не я, который был ниспровергнут) –

+0

@SashaSalauyou Спасибо за исправление, не заметил этого. – TEXHIK

3

Не только у вас есть косая черта/черточки неправильно, вы также используете DD (день года) вместо dd (день месяца). Вы хотите:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 

Как всегда, читайте the documentation, чтобы точно выяснить, что означают символы шаблон - и если вы обнаружите, что это странно ведет себя, проверить шаблон с данными очень тщательно.

Я также рекомендуем:

  • Использование Joda Time (до Java-8) или java.time (Java 8), если это возможно; java.util.Date/Calendar API ужасен
  • Указание локаль явно
  • Указание часового пояса явно

В настоящее время вы используете часовой пояс и локаль по умолчанию. Хотя в этом случае языковой стандарт может не иметь значения (если он не используется для выбора системы календаря, я не могу вспомнить заранее). Я думаю, что яснее явно указать его. Часовой пояс обязательно вопросы; если вы только когда-либо захотите рассматривать это как дату (нет времени), вероятно, стоит указать UTC - таким образом, легко взаимодействовать с чем-либо еще, и вы получаете дневные границы в очевидных местах в базовом миллисекундном представлении.

+0

Только что понял второй вопрос ...: D – Mena

Смежные вопросы