Подтвердить что ты не робот

Строка SimpleDateFormat

У меня есть этот код, где аргумент dateFormat.format всегда будет string, поэтому я сделал .toString() здесь. Я получаю сообщение об ошибке "Невозможно отформатировать данный объект как дату".

Есть ли способ сделать это? Обратите внимание, что строка поступает из базы данных. Я использовал новую дату() в качестве примера здесь.

SimpleDateFormat dateFormat = new SimpleDateFormat("MMMMM dd, yyyy");
String sCertDate = dateFormat.format(new Date().toString());
4b9b3361

Ответ 1

Формат DateFormat # принимает дату, а не строку.

Использование

String sCertDate = dateFormat.format(new Date());

Если у вас есть строка из базы данных, которая является конкретным форматом, и вы хотите преобразовать ее в дату, вы должны использовать parse.

@Sonesh. Предположим, у вас есть строка в базе данных, которая представляет собой дату (может быть, лучше сохранить объект в базе данных как даты?), тогда вы сначала parse его в формат, который вы а затем format в нужный формат строки.

// Assumes your date is stored in db with format 08/01/2011
SimpleDateFormat dateFormatOfStringInDB = new SimpleDateFormat("MM/dd/yyyy");
Date d1 = dateFormatOfStringInDB.parse(yourDBString);
SimpleDateFormat dateFormatYouWant = new SimpleDateFormat("MMMMM dd, yyyy");
String sCertDate = dateFormatYouWant.format(d1);

Ответ 2

Существует два приложения SimpleDateFormat:

  • проанализировать строку - когда у вас есть дата, представленная как строка, и вы хотите получить соответствующий объект Date. Затем используйте dateFormat.parse(string)

  • форматировать дату - когда у вас есть объект Date, и вы хотите отформатировать его определенным образом (обычно, чтобы показать его пользователю). В этом случае используйте dateFormat.format(date)

Два метода являются взаимными: один принимает дату и возвращает строку, а другой берет строку и возвращает дату.

Для вашего конкретного случая, возможно, вам нужно .parse(..). Но учтите, что у каждого "уважающего себя" драйвера базы данных должна быть возможность возвращать Date вместо некоторого строкового представления. Если вам приходится хранить даты в виде строки в БД - не делайте этого. Используйте собственный тип даты.

Ответ 3

Если вам нужно прочитать Date с одним строковым форматом и вывести его в другой формат String, вам понадобится 2 форматирования, например:

SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat outputFormat = new SimpleDateFormat("MMMMM dd, yyyy");
String output = outputFormat.format(inputFormat.parse(input));