2011-12-19 4 views
0

java.text.ParseException: дата не поддается синтаксическому анализу: «СБ 1 мая 00:00:00 EDT 2010»Попытка преобразовать строку даты в дату

Я пытаюсь разобрать эту дату, используя класс SimpleDateFormat.

java.util.Date prevStartDate = new Date(); 
java.util.Date prevStopDate = new Date(); 
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
prevStartDate = dateFormat.format(startDateLY); 
+3

, который вы пытаетесь разобрать дату не выглядит, как ваш формат дата вы показал нам. На самом деле, я вообще не вижу вызова 'parse' в вашем вопросе. Это соответствующий код? – Paul

ответ

3

Это было бы, потому что вы используете формат yyyy-MM-dd - вы должны добавить каждый параметр в вашем входе в этот формат.

Похоже, ваш формат E MMM dd HH:mm:ss z yyyy

Так что вам нужно конвертировать из одного в другой:

static DateFormat extended = new SimpleDateFormat("E MMM dd HH:mm:ss z yyyy"); 
static DateFormat simple = new SimpleDateFormat("yyyy-MM-dd"); 

String reformat(String extendedString) { 
    Date yourDate = extended.parse(extendedString); 
    String simpleString = simple.format(yourDate); 
    return simpleString; 
} 

или альтернативно,

String reformat(String dateString) { 
    return simple.format(extended.parse(dateString)); 
} 
1
DateFormat formatter = new SimpleDateFormat("E MMM dd HH:mm:ss z yyyy"); 
Date date = (Date)formatter.parse("Sat May 01 00:00:00 EDT 2010"); 
String string = new String(date.getYear() + "-" + date.getMonth() + "-" + date.getDay()); 

должен работать лучше, только yyyy-MM-dd.

+0

Мне нужен yyyy-mm-dd для вставки mysql – kbrin80

+0

@ kbrin8 - Я обновил ответ, чтобы дать вам строку в этом формате. – Grammin

+0

Пара проблем с этим. Во-первых, он использует форматтер для синтаксического анализа (хороший), но почему бы и не использовать форматтер для вывода? Во-вторых, использование 'new String' почти всегда является плохим решением, и действительно, в этом случае оно также создает копию массива поддержки. – corsiKa

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