2015-11-20 3 views
0

Может ли кто-нибудь указать, что здесь проблема?Java простой формат даты для строки на сегодняшний день

try { 
    Date date = new SimpleDateFormat("Mon, 02 Nov 2015 15:13:00 EET").parse("EEE, dd MMM yyyy hh:mm:ss z"); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 

и StackTrace:

java.text.ParseException: Unparseable date: "Mon, 02 Nov 2015 15:13:00 EET" (at offset 26) 

Я заподозрив что-то с локалью, что я использую, но я не могу быть уверен. Кажется, что «z» для часового пояса не работает.

Редактировать: Извините, что исключение было забавно ранее, я изменил его, но забыл обновить здесь.

try { 
      Date date = new SimpleDateFormat("EEE, dd MMM yyyy hh:mm:ss z", Locale.US).parse("Mon, 02 Nov 2015 15:13:00 EET"); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
+1

У вас есть аргументы назад. передать строку формата в конструктор SimpleDateFormat и фактическую строку даты для разбора – DBug

+0

Извините, что я забыл обновить код раньше, вот реальный с этим исключением. Старое давало какое-то смешное исключение, вроде «no pattern» o »или что-то –

+0

. Следующее предположение было бы, что EET не является признанным часовым поясом – DBug

ответ

0

Я думаю, что вам не хватает «z» здесь.

Try:

Date date = new SimpleDateFormat("Mon, 02 Nov 2015 15:13:00 EET"). 
     parse("EEE, dd MMM yyyy hh:mm:ss zzz") 

Поскольку ваш часовой пояс находится с тремя персонажами.

+0

Я не думаю, что это так. В документации оракула они приводили этот пример «K: mm a, z» \t 0:08 PM, PDT. Но не это важно, я пробовал каждую комбинацию от 1 до 4 г, чтобы убедиться, что предыдущий капитал или ниже :) –

1

После просмотра javadoc для SimpleDateFormat вы используете «hh» для часа, который считается 12-часовым. Используйте HH для 24-часового времени. Ваш пример как 15 для часа.

+0

Да, я изменил это, спасибо за объявление, но это не проблема. Я думаю, что когда вы используете hh, он изменяет ваше значение, так как проблема находится в смещении 26, и это все еще после того, как я изменил ее на HH. –

+0

Затем я вернусь к часовому поясу EET, который не распознается Java, даже если это действительный часовой пояс. Попробуйте заменить EET на EST. – DBug

+0

Да, кажется, он работает с EST. Жаль, что это фид и не может его изменить. Думаю, я раскололся и надеюсь, что корм не изменится. Спасибо :) –

0

Такое исключение может исходить из разбора даты с неправильным Locale. Например, эта дата форматировщик:

SimpleDateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy hh:mm:ss z", Locale.US); 

успешно разобрать дату пример:

Date date = df.parse("Mon, 02 Nov 2015 15:13:00 EET"); 

Но следующий даст исключение вы получаете

SimpleDateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy hh:mm:ss z", Locale.FRENCH); 

я ожидал бы Locale в Android выбирается в соответствии с языком, установленным пользователем.

+0

Но я уже создаю экземпляр simpleDateFormatter с Locale.US, не так ли будет использовать Locale.getDefault(), чтобы получить исключение? –

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