Я хочу получить отформатированную дату в Java
Я хочу получить новый 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 ответов
Вы неправильно смотрите формат и дату.
- Дата не содержит формат. 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:
Вы не можете связать формат с объектом Date, вместо этого вы можете применять форматы только во время отображения или других действий.
Выполните всю обработку в самом объекте Date и при отображении одного изменения в нужный формат,
Ваш вопрос не имеет смысла. Форматирование даты по определению означает преобразование ее в строку с использованием определенного формата. Date
объект может оставаться как Date
объект. Это только в точке, где вы хотите преобразовать его в String
что вам нужно сделать любое форматирование.
Я думаю, что вы пытаетесь достичь не имеет смысла.
Date
объект представляет время. Вы не можете отформатировать его. Но вы можете получить его строковое представление в определенном формате. Как с myFormat.format(today)
,
Я думаю, что вы что-то не так поняли о том, что Date
Объект есть. Date
просто хранит информацию о моменте времени - у нее вообще нет формата. Когда дело доходит до String
представление Date
вот где форматирование вступает в игру. Заботьтесь о форматировании, только когда вы:
- Разбор
String
представление вDate
объект. - Преобразование
Date
Вернуться вString
представление, чтобы отобразить его определенным образом.