Ошибка синтаксического анализа DateFormat - PullRequest
2 голосов
/ 15 февраля 2012

У меня назначена дата. Так, например, 16.02.2012.Что мне нужно сделать для работы с форматом моей базы данных, так это преобразовать его в 2012-02-16.Я подумал, что это будет довольно просто.Но я не могу это сделать.Вот мой парсер дат.

String endDateString = "02/16/2012"
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd"); 
endDate = dateFormat.parse(endDateString)

Есть предложения?Спасибо.

Ответы [ 6 ]

4 голосов
/ 15 февраля 2012

Что вы хотите сделать, это проанализировать входящий формат для объекта Date

final SimpleDateFormat idf = new SimpleDateFormat("MM/dd/yyyy");
final Date indate = idf.parse("02/16/2012");

, а затем переформатировать объект Date в нужный вам формат

final SimpleDateFormat odf = new SimpleDateFormat("yyyy-MM-dd");
final String s = odf.format(indate);
1 голос
/ 15 февраля 2012

Вы должны проанализировать его из одного правильного формата, а затем преобразовать строку в другой правильный формат. Что вы делаете - пытаетесь интерпретировать дату в формате MM/dd/yyyy с форматом yyyy-MM-dd, т.е. неверно.

ОБРАЗЕЦ

public static void main(String[] args) throws ParseException {

    SimpleDateFormat sourceFormat = new SimpleDateFormat("MM/dd/yyyy");
    SimpleDateFormat destinationFormat = new SimpleDateFormat("yyyy-MM-dd");

    String sourceDateString = "02/16/2012";
    String destinationDateString;

    Date dat; // this object stores "perfect" date object

    // interpreting string with input format and converting it to date
    dat = sourceFormat.parse(sourceDateString);

    // expressing date object as string in destination format
    destinationDateString = destinationFormat.format(dat);

    System.out.format("Done from %s to %s\n", sourceDateString, destinationDateString));


}
0 голосов
/ 17 февраля 2012

Вы также можете конвертировать дату на уровне базы данных.Например, MySQL имеет функцию STR_TO_DATE.В вашем случае это будет STR_TO_DATE ('02 / 16/2012 ','% m /% d /% Y ')

0 голосов
/ 15 февраля 2012

Этот фрагмент может рассказать вам, как это сделать.

SimpleDateFormat inputDateFormat = new SimpleDateFormat("MM/dd/yyyy");
SimpleDateFormat outputDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String endDateString = "02/16/2012";
String endDate =     outputDateFormat.format(inputDateFormat.parse(endDateString));

Ссылка: SimpleDateFormat

0 голосов
/ 15 февраля 2012

Указанный вами формат даты должен соответствовать формату даты вашего ввода, например:

SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy"); 
0 голосов
/ 15 февраля 2012

Вы анализируете с неправильным форматом

new SimpleDateFormat("MM/dd/yyyy"); 
...