Исключение синтаксиса формата даты - "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");
возьмите:
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");
Ответы
Ответ 1
Я собираюсь предположить, что Locale.getDefault()
для вас pl-PL
, так как вы, кажется, находитесь в Польше.
Английские слова в строках даты, следовательно, дают неподдельную дату.
Соответствующая польская дата String
будет чем-то вроде
"Wt paź 16 00:00:00 -0500 2013"
В противном случае измените Locale
на Locale.ENGLISH
так, чтобы объект SimpleDateFormat
мог анализировать даты String
с английскими словами.
Ответ 2
Вместо того, чтобы использовать 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
. Или вы можете решить, какую часть этой даты распечатать, используя свои поля.
Надеюсь, что эта помощь:)
Ответ 3
Я думаю, что исходное исключение связано с Z
в вашем формате.
Per документация:
Z Time zone RFC 822 time zone -0800
Скорее всего, вы хотели использовать нижний регистр Z