it-swarm.com.ru

Parse String date в формате (гггг-мм-дд)

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

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

Преобразованная текущая дата будет выглядеть как «среда, 18 сентября, 00:00:00 IST 2013».

Я хочу, чтобы мой вывод в виде «2013-09-18»

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

11
user2791546

Вам может понадобиться 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
28
Ruchira Gayan Ranaweera

тЛ; др

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

… а также …

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

Java.time

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

ISO 8601

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

LocalDate

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

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

О Java.time

Java.time framework встроен в 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? 

  • Java SE 8 , Java SE 9 , Java SE 10 и более поздние версии
    • Встроенный. 
    • Часть стандартного Java API со встроенной реализацией.
    • Java 9 добавляет некоторые незначительные функции и исправления.
  • Java SE 6 и Java SE 7
    • Большая часть функциональности Java.time перенесена в Java 6 & 7 в ThreeTen-Backport .
  • Android

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

9
Basil Bourque

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

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

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

Я конвертирую String в Date в формате («гггг-MM-дд») для сохранения в базе данных 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 это мой вывод в формате даты

1
mahdi kallel