2015-05-20 2 views
-1
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss");  
String stringdate = "Wed Jan 01 00:00:00 CST 2014"; 
Date stringFromDate = null; 
try { 
    Date dtt= formatter.parse(stringDate); 
    System.out.println(dtt); 
} 
catch (ParseException e1) { 
    e1.printStackTrace(); 
} 

Я получаю исключение java.text.ParseException: Unparseable date: "Wed Jan 01 00:00:00 CST 2014" много раз пытался, но он не работает.string to sql date conversion in java

Здесь у меня есть «stringdate» в качестве фиксированного формата, и я должен отображать его в формате MM/DD/yyyy. Это мое требование.

+2

Формат вашей даты не совпадает с форматом, используемым в 'SimpleDateFormat'. –

+0

не может найти матч, можете вам помочь. – tom

+0

Не знаете, что вы подразумеваете под «неспособным найти совпадение» - прочитали ли вы документацию для 'SimpleDateFormat'? Сравните ваш шаблон со значением, которое вы анализируете ... –

ответ

2

Неверный шаблон, который вы используете для вашего SimpleDateFormat.

Эта модель должна соответствовать вашему заданный формат даты:

EEE MMM dd HH:mm:ss Z yyyy 

использовать его при создании SimpleDateFormat:

SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy"); 

Для получения дополнительной информации о том, что означают различные буквы, имеют взгляд на documentation for SimpleDateFormat.

Заметим также, что SimpleDateFormat.parse()не даст вам java.sql.Date, как упомянуто в названии, а скорее java.util.Date.

Edit: Для вывода даты в другом формате, вы можете создать второй SimpleDateFormat с шаблоном, который представляет желаемый формат вывода. Затем вы можете преобразовать его обратно в строку, которую вы хотите использовать SimpleDateFormat.format():

SimpleDateFormat outputFormat = new SimpleDateFormat("MM/dd/yyyy"); 
String output = outputFormat.format(yourDate); 

System.out.println(output); 

В целом, это приводит к следующему коду:

String input = "Wed Jan 01 00:00:00 CST 2014"; 
SimpleDateFormat inputFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy"); 

try { 
    Date date = inputFormat.parse(input); 

    SimpleDateFormat outputFormat = new SimpleDateFormat("MM/dd/yyyy"); 
    String output = outputFormat.format(date); 

    System.out.println(output); // 01/01/2014 

} catch (ParseException e) { 
    e.printStackTrace(); 
} 
+0

С другой стороны, у меня есть фиксированный формат даты.Я хочу изменить его на MM/dd/yyyy – tom

+1

Итак, у вас есть фиксированный шаблон, с которым вы создаете свой 'SimpleDateFormat', и можете создать свой' stringdate' так, как вы хотите? Или наоборот? – Timo

+0

точно, я хочу показать дату в формате MM/DD/YYYY – tom

1

Чтобы получить даты в формате мм/дд/гггг попробуйте использовать второй SimpleDateFormat как:

new SimpleDateFormat("MM/dd/yyyy"); 
+0

С другой стороны, у меня есть фиксированный формат даты. Я хочу изменить его на MM/dd/yyyy – tom

+1

Пожалуйста, обновите свой пост этой информацией и результатами, которые вы ожидаете. – hitz

+0

Я сделал это, пожалуйста, проверьте – tom