Необходима помощь с форматом даты в java

#java

#java — язык

Вопрос:

У меня есть данные моей базы данных в этом формате

18-10 ноября

Я должен передать тот же формат в java.util.Дата, подобная этой

Дата date = новый java.util.Дата (dateformater);

так что результат java.util.Дата такая 18-10 ноября

Возможно ли это ??

Я пробовал этот способ

 String strDate = "12-NOV-07";

    SimpleDateFormat sdfSource = new SimpleDateFormat("dd-MMM-yy");

    Date date = sdfSource.parse(strDate);

    System.out.println(date);
  

Но я получаю результат как «Пн Ноя 12 00:00:00 IST 2007″, который мне нужен только
12 ноября-07»

Комментарии:

1. Вы храните даты в своей базе данных как текст, а не как DateTime?

2. Вы начинаете с «12 ноября-07», а желаемый результат — «12 ноября-07»? Я не понимаю.

Ответ №1:

Вы можете использовать java.text.DateFormat (на самом деле SimpleDateFormat), чтобы добраться туда, куда вы хотите, но, возможно, вам не следует хранить даты в виде строк в вашей базе данных. Он будет выполнять вывод и синтаксический анализ.

 SimpleDateFormat sdf =
            new SimpleDateFormat("DD-MMM-YY");
Date parsed = sdf.parse(dateString);
  

Смотрите http://javatechniques.com/blog/dateformat-and-simpledateformat-examples /

Как только вы получите дату, вы можете преобразовать ее в нужный вам формат, но она будет храниться в памяти как объект Date. Вы можете получить его в нужной форме, используя

 String dateString = sdf.format(parsed);
  

Ответ №2:

Как указывали другие, вам, вероятно, следует хранить ваши даты как даты, а не строки; тем не менее…

Если вы хотите превратить Date обратно в строку в этом формате, вы можете использовать следующее:

 DateFormat formatter = new SimpleDateFormat("dd-MMM-yy");
Date date = new Date();
String dateStr = formatter.format(date); // Gives "22-May-11"
  

Если вам нужно MAY вместо May, просто используйте toUpperCase() в результирующей строке.

Ответ №3:

 DateFormat sdf = new SimpleDateFormat("dd-MMM-yy");
Date d = sdf.parse("18-NOV-10");
  

Комментарии:

1. Я попробовал вашу программу, но я получаю чт 18 ноября 00:00: 00 IST 2010, где я хочу только как 18-NOV-10

2. Я не понимаю, что вам нужна эта строка, только тогда зачем вы хотите преобразовать в date?

3. У меня есть метод List getSummary (дата от даты, дата к дате), это в java.util. Формат даты и данные в базе данных имеют формат с 18 по 11 ноября

4. Я бы посоветовал вам не хранить дату в виде строки в DB, и на данный момент ответ таков sdf.format(d);

Ответ №4:

Попробуйте System.out.println(sdfSource.format(date).toUpperCase()); вместо этого. Date У объекта всегда будет компонент времени; нет способа «отключить» эту функцию. Вместо этого вы можете игнорировать его в своих вычислениях и отображать. Если все Date используемые вами объекты настроены на одно и то же время суток, то вы можете смело игнорировать влияние временного компонента при ваших сравнениях. Если вы внимательно посмотрите, то для компонента времени вашего Date объекта установлено значение полночь.