Исключение синтаксиса формата даты – «EEE MMM dd HH: mm: ss Z yyyy»

У меня проблема с датой даты синтаксического анализа:

SimpleDateFormat parserSDF=new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy", Locale.getDefault()); parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013"); 

исключение

Exacly Я хочу разобрать эту дату формата на yyyy-MM-dd. Я пытаюсь:

 SimpleDateFormat parserSDF = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH); Date date = parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013"); 

take: java.text.ParseException: Непревзойденная дата: «Ср 16 октября 00:00:00 CEST 2013»


ОК, я перехожу к и работает:

 SimpleDateFormat parserSDF = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy", Locale.ENGLISH); Date date = parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013"); 

3 Solutions collect form web for “Исключение синтаксиса формата даты – «EEE MMM dd HH: mm: ss Z yyyy»”

Я собираюсь предположить, что Locale.getDefault() для вас – pl-PL так как вы, кажется, Locale.getDefault() в Польше.

Поэтому английские слова в строках даты вызывают неподдельную дату.

Соответствующая польская дата String будет чем-то вроде

 "Wt paź 16 00:00:00 -0500 2013" 

В противном случае измените свой Locale на Locale.ENGLISH чтобы объект SimpleDateFormat мог анализировать даты String с английскими словами.

Вместо того, чтобы использовать Locale.default что вы и другие часто не знаете, какой по умолчанию, вы можете решить, используя locale.ENGLISH потому что я вижу, что ваша строковая дата имеет формат на английском языке. Если вы находитесь в других странах, формат будет другим.

Вот мой пример кода:

 public static void main(String[] args) { try { SimpleDateFormat parserSDF = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.ENGLISH); Date date = parserSDF.parse("Wed Oct 16 00:00:00 CEST 2013"); System.out.println("date: " + date.toString()); } catch (ParseException ex) { ex.printStackTrace(); } } 

Результатом будет: date: Wed Oct 16 05:00:00 ICT 2013 . Или вы можете решить, какую часть этой даты распечатать, используя свои поля.

Надеюсь эта помощь 🙂

Я думаю, что исходное исключение связано с Z в вашем формате. По документации :

 Z Time zone RFC 822 time zone -0800 

скорее всего, вы хотели использовать нижний регистр z

  • Невозможно проанализировать строку DateTime с маркером AM / PM
  • java.text.ParseException: Непревзойденная дата
  • Y возвращает 2012, а y возвращает 2011 в SimpleDateFormat
  • Недопустимый символ шаблона 'T' при анализе строки даты на java.util.Date
  • Почему SimpleDateFormat Java не является streamобезопасным?
  • Давайте будем гением компьютера.