Дата синтаксического разбора в формате (yyyy-MM-dd)

У меня есть строка в форме "2013-09-18". Я хочу преобразовать его в java.util.Date. Я делаю это

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date convertedCurrentDate = sdf.parse(currentDateText);

Конвертированный CurrentDate приходит как 'Wed 18 сентября 00:00:00 IST 2013'

Мне нужен мой вывод в форме "2013-09-18"

Час, минуты и секунды не должны появляться, и он должен быть в форме yyyy-MM-dd.

Ответ 1

Возможно, вам придется format вывод, как показано ниже.

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date convertedCurrentDate = sdf.parse("2013-09-18");
String date=sdf.format(convertedCurrentDate );
System.out.println(date);

использование

String convertedCurrentDate =sdf.format(sdf.parse("2013-09-18"));

Выход:

2013-09-18

Ответ 2

ТЛ; др

LocalDate.parse( "2013-09-18" )

… а также …

myLocalDate.toString()  // Example: 2013-09-18

java.time

Вопрос и другие ответы устарели. Мучительные старые унаследованные классы даты и времени теперь вытесняются классами java.time.

ISO 8601

Ваша входная строка соответствует стандарту ISO 8601, YYYY-MM-DD. Классы java.time по умолчанию используют форматы ISO 8601 при разборе и генерации строковых представлений значений даты и времени. Поэтому нет необходимости указывать шаблон форматирования.

LocalDate

Класс LocalDate представляет значение только для даты без времени суток и без часового пояса.

LocalDate ld = LocalDate.parse( "2013-09-18" );

О java.time

Инфраструктура java.time встроена в Java 8 и более поздние версии. Эти классы вытеснять неприятные старые устаревшие классы даты и времени, такие как java.util.Date, Calendar, и SimpleDateFormat.

Проект Joda-Time, находящийся сейчас в режиме обслуживания, рекомендует перейти на классы java.time.

Чтобы узнать больше, смотрите Oracle Tutorial. И поиск для многих примеров и объяснений. Спецификация JSR 310.

Вы можете обмениваться объектами java.time напрямую с вашей базой данных. Используйте драйвер JDBC, соответствующий JDBC 4.2 или более поздней версии. Нет необходимости в строках, нет необходимости в java.sql.*.

Где взять классы java.time?

Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти некоторые полезные классы, такие как Interval, YearWeek, YearQuarter и другие.

Ответ 3

Создается объект Date, представляющий собой определенную точку на временной шкале. Это означает, что у него будут все части, необходимые для правильного представления, включая минуты и секунды и т.д. Поскольку вы инициализируете его из строки, содержащей только часть даты, пропущенные данные будут по умолчанию.

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

Ответ 4

DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
String cunvertCurrentDate="06/09/2015";
Date date = new Date();
date = df.parse(cunvertCurrentDate);

Ответ 5

Я конвертирую String в Date в формате ( "yyyy-MM-dd" ) для сохранения в базу данных Mysql.

 String date ="2016-05-01";
 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
 Date parsed = format.parse(date);
 java.sql.Date sql = new java.sql.Date(parsed.getTime());

sql это мой вывод в формате даты