Я хочу получить отформатированную дату в Java - PullRequest
1 голос
/ 02 января 2012

Я хочу получить новый Date объект с SimpleDateFormat, примененным к нему.Я хотел бы сделать что-то вроде:

SimpleDateFormat myFormat = new SimpleDateFormat("dd MMM yyyy kkmm");
Date today = new Date();
today = myFormat.format(today);

Я не могу этого сделать, потому что сегодня это Date, а format возвращает String.Я также попробовал:

Date today;
SimpleDateFormat myFormat = new SimpleDateFormat("dd MMM yyyy kkmm");
try{
    today = myFormat.parse((new Date()).toString());
}catch(Exception e){

}

Это не очень хорошее решение, потому что, когда я пытаюсь использовать сегодня в другом месте, Java жалуется, что сегодня, возможно, не было созданоКаков хороший способ изменить формат объекта Date (сохраняя при этом объект Date и не превращая его в строку)?

Ответы [ 5 ]

5 голосов
/ 02 января 2012

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

  • Дата не содержит формат. Date - это просто класс, содержащий информацию о дате, такую ​​как дата, месяц, часы, секунды и т. Д.
  • SimpleDateFormat - это тот, который сообщает вам строковое представление Date. Но с ней нет даты.

Таким образом, идея в том, что когда вам нужно отобразить дату или сохранить дату в некотором строковом представлении, вы будете использовать SimpleDateFormat и передавать ему дату, для которой вы хотите строковое представление.

Одно из преимуществ в этом случае заключается в том, что я могу использовать один и тот же объект Date и отображать два разных строковых представления (используя два разных экземпляра SimpleDateFormat). И также наоборот, определив один экземпляр SimpleDateFormat, я могу форматировать несколько дат.

Редактировать:

Теперь, если вы хотите убрать некоторую информацию с даты. Используйте

Calendar rightNow = Calendar.getInstance();
Calendar cal = new GregorianCalendar(
   rightNow.get(YEAR),
   rightNow.get(MONTH),
   rightNow.get(DAY_OF_MONTH));
Date now = cal.getTime();

Есть и другие хорошие варианты, например JodaTime

.

Ref:

GregorianCalendar Календарь Joda Time

0 голосов
/ 02 января 2012

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

Выполнить всю обработку в самом объекте Date и при отображении одного изменить на нужный формат ,,

0 голосов
/ 02 января 2012

Я думаю, что вы что-то не так поняли о том, что такое Date объект. Date просто хранит информацию о моменте времени - у него вообще нет формата. Когда дело доходит до String представления Date, именно здесь форматирование вступает в игру. Заботьтесь о форматировании, только когда вы:

  1. Анализ String представления в Date объект.
  2. Преобразование Date обратно в представление String, чтобы отобразить его определенным образом.
0 голосов
/ 02 января 2012

Ваш вопрос не имеет смысла. Форматирование даты по определению означает преобразование ее в строку с использованием определенного формата. Объект Date может оставаться объектом Date. Только в том месте, где вы хотите преобразовать его в String, вам нужно выполнить любое форматирование.

0 голосов
/ 02 января 2012

Я думаю, что то, что вы пытаетесь достичь, не имеет смысла.

Объект Date представляет время.Вы не можете отформатировать его.Но вы можете получить его строковое представление в определенном формате.Как с myFormat.format(today).

...