#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
объекта установлено значение полночь.