Java, получить текущую дату в формате 2020-12-23 тип Date

   String sDate1="2020-12-23";  
   Date date1=new SimpleDateFormat("yyyy-MM-dd").parse(sDate1);  

Возвращает - Wed Dec 23 15:02:32 IST 2020, при необходимом - 2020-12-23. Спасибо.


Всем спасибо. Вопрос закрыт.

Еще раз благодарю (просто менее 30 символов не принимает :) ).


Ответы (2 шт):

Автор решения: Владимир Карсанов

java.util.Date -- это довольно сложно устроенный объект, который содержит внутри себя данные о дате и методы работы с ними. Вы, видимо, выполнили какой-то такой код:

String sDate1="2020-12-23";  
Date date1=new SimpleDateFormat("yyyy-MM-dd").parse(sDate1);
System.out.println(date1);

Увидели в консоли Wed Dec 23 15:02:32 IST 2020 и подумали, что в date1 храниться какая-то неправильная строка.

Но в date1 не хранится строка. Там хранится дата (т.е. довольно сложно устроенный объект и т.д.).

Вы очень ловко превратили строку в дату -- это хорошо. А теперь посмотрите, как вам превращать дату в строку нужного вида. Например, можно так:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String format = formatter.format(date1);
System.out.println(format);

Используя всё тот же SimpleDateFormat, кстати.

Просто когда она у вас строка -- она всегда одинаковая строка. А когда она у вас дата -- вы можете с помощью форматтера выбирать как именно должна выглядеть строка с датой.

→ Ссылка
Автор решения: Zhenyria

У вас всё задом наперёд в коде.

Метод parse() в SimpleDateFormat преобразует строку в дату. Естественно, если вы выведите в консоль полученный экземпляр Date, вывод будет Wed Dec 23 15:02:32 IST 2020, потому что выведется именно полученный Date.

А вам, наверное, надо обратное действие. Date превратить в строку. Для этого у SimpleDateFormat есть метод format(), в который подаётся экземпляр класса Date, а выходит красиво отформатированная строка.

Ещё раз:

  • parse() - принимает строку, возвращает Date.
  • format() - принимает Date, возвращает строку.
→ Ссылка