Разобрать строку на дату в Java

Я пытаюсь разобрать строку с датой, вот что у меня есть:

SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss zZ (zzzz)");
Date date = new Date();
try {
    date = sdf.parse(time);
} catch (ParseException e) {
    e.printStackTrace();
}

строка для разбора такая:

Sun Jul 15 2012 12:22:00 GMT+0300 (FLE Daylight Time)

Я следовал заhttp://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

Я уверен, что все сделал по книге. Но это дает мнеParseException.

java.text.ParseException: Unparseable date: 
"Sun Jul 15 2012 12:22:00 GMT+0300 (FLE Daylight Time)"

Что я делаю неправильно? Шаблоны, которые я пробовал:

EEE MMM dd yyyy HH:mm:ss zzz
EEE MMM dd yyyy HH:mm:ss zZ (zzzz)
 Jaanus12 июл. 2012 г., 09:11
@JoachimSauer проблема все еще остается, к сожалению,
 Keppil12 июл. 2012 г., 09:50
Гдеtime Строка взялась?
 Joachim Sauer12 июл. 2012 г., 08:58
Я думаю, что это должно быть"... zz (zzzz)Вы заглавныеZ.
 ioreskovic12 июл. 2012 г., 09:28
Here это: D Я думаю, что каждый покрывает то, что вам нужно: D

Ответы на вопрос(4)

Вы можете попробовать напечатать строку формата даты:

/**
 * @param args
 */
public static void main(String[] args) {
    SimpleDateFormat sdf = new SimpleDateFormat(
            "EEE MMM dd yyyy HH:mm:ss zZ (zzzz)");
    Date date = new Date();
    try {
        //
        System.out.println(sdf.format(date));
        date = sdf.parse(time);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
 Jaanus12 июл. 2012 г., 09:18
Он использует мой язык, WTF, я хочу, чтобы он использовал английский.N Juuli 12 2012 10:18 EEST+0300 (Eastern European Summer Time)
 12 июл. 2012 г., 09:30
@Jaanus Тогда используйте правильныйLocale. ;)

Попробуйте это так ...

System.out.println(new SimpleDateFormat(
                "EEE MMM dd yyyy HH:mm:ss zZ (zzzz)").format(new Date()));

Output i got:

Thu Jul 12 2012 12:41:35 IST+0530 (India Standard Time)
 Jaanus12 июл. 2012 г., 09:19
Я использую мой собственный язык, а не английский, господи,N Juuli 12 2012 10:19:35 EEST+0300 (Eastern European Summer Time)
 12 июл. 2012 г., 09:26
использованиеSimpleDateFormat(String pattern, Locale.US)
 Jaanus12 июл. 2012 г., 09:39
@Subs использовал локаль, но все равно получал исключение.
Решение Вопроса

Вы, кажется, смешиваете шаблоны дляz а такжеZ, Если вы игнорируете(FLE Daylight Time), так как это та же информация, что и вGMT+0300, проблема в том, чтоSimpleDateFormat хочет либоGMT +0300 или жеGMT+03:00, Последний вариант можно проанализировать так:

String time = "Sun Jul 15 2012 12:22:00 GMT+03:00 (FLE Daylight Time)";
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss zzz");
Date date = sdf.parse(time);

[EDIT]
В свете других сообщений о работе их временных строк, возможно, это связано с тем, что ваша временная строка содержит противоречивую информацию или смешанные форматы.

 Jaanus12 июл. 2012 г., 09:43
time = time + ":"; , до сих пор не работает.
 12 июл. 2012 г., 09:43
Посмотрите на мой пример, пожалуйста.
 Jaanus12 июл. 2012 г., 09:47
Вы уверены, что ... используя:EEE MMM dd yyyy HH:mm:ss zzzи когда я его распечатаю: `Date date = new Date (); `, а затем покажите формат:System.out.println(sdf.format(date)); , он печатает:Thu Jul 12 2012 10:47:09 EEST
 Jaanus12 июл. 2012 г., 09:39
Я пытался использовать zzz, но проблема существует, посмотрите первый пост EDIT2
 12 июл. 2012 г., 09:40
Вам нужно добавить: к вашей временной строке, чтобы это работало.

Если у вас есть проблемы с локалями, вы можете установить локаль по умолчанию для всего приложения

Locale.setDefault(Locale.ENGLISH);

или просто используйте английскую локаль на вашемSimpleDateFormat

SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss zZ (zzzz)", Locale.ENGLISH);

Вы также можете использоватьLocale.US или жеLocale.UK.

 Jaanus12 июл. 2012 г., 09:38
Сделал набор, проблема существует, смотри update2

Ваш ответ на вопрос