SimpleDateFormat String - PullRequest
       6

SimpleDateFormat String

13 голосов
/ 22 августа 2011

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

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

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

Ответы [ 3 ]

24 голосов
/ 22 августа 2011

Формат 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);
6 голосов
/ 22 августа 2011

Есть два приложения SimpleDateFormat:

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

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

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

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

4 голосов
/ 22 августа 2011

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

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