Современный ответ: используйте LocalDate
из java.time
, современный API даты и времени Java и его метод toString
:
LocalDate date = LocalDate.of(2012, Month.DECEMBER, 1); // get from somewhere
String formattedDate = date.toString();
System.out.println(formattedDate);
Это печатает
2012-12-01
Дата (будь то java.util.Date
или java.time.LocalDate
) не имеет формата. Все, что у него есть, это метод toString
, который создает некоторый формат, и вы не можете изменить метод toString
. К счастью, LocalDate.toString
выдает именно тот формат, который вы просили.
Класс Date
давно устарел, а класс SimpleDateFormat
, который вы пытались использовать, известен своей проблемой. Я рекомендую вам забыть об этих классах и использовать вместо них java.time
. С современным API гораздо приятнее работать.
За исключением: бывает, что вы получаете Date
от устаревшего API, который вы не можете изменить или не хотите менять прямо сейчас. Лучшее, что вы можете с ним сделать, это преобразовать его в java.time.Instant
и выполнять оттуда любые дальнейшие операции:
Date oldfashoinedDate = // get from somewhere
LocalDate date = oldfashoinedDate.toInstant()
.atZone(ZoneId.of("Asia/Beirut"))
.toLocalDate();
Пожалуйста, укажите желаемый часовой пояс, если это не Азия/Бейрут. Затем действуйте, как указано выше.
Ссылка: учебное пособие по Oracle: дата и время, объясняющее, как использовать java.time
.
person
Ole V.V.
schedule
22.01.2018
public Date ConvertDate(Date date)
? - person vels4j   schedule 26.12.2012Date
не имеет формата. Вы можете иметь желаемый формат только вString
внеDate
. См. Все о java.util.Date. - person Ole V.V.   schedule 22.01.2018