Это приведет к inActiveDate = Wed Sep 26 00:00:00 IST 2012. Но то, что мне нужно, это 2012-09-26. Моя цель - сравнить эту дату с другой датой в моей базе данных, используя критерии гибернации. Итак, мне нужен объект date в yyyy-MM-dd формате.
Переведено автоматически
Ответ 1
A Java Date - это контейнер для количества миллисекунд, прошедших с 1 января 1970 года, 00:00:00 GMT.
Когда вы используете что-то вроде System.out.println(date), Java использует Date.toString() для печати содержимого.
Единственный способ изменить это - переопределить Date и предоставить свою собственную реализацию Date.toString(). Теперь, прежде чем вы запустите свою IDE и попробуете это, я бы не стал; это только усложнит дело. Вам лучше отформатировать дату в формат, который вы хотите использовать (или отображать).
При работе с датой и временем (в отличие от локальной даты), часовой пояс имеет решающее значение. День месяца зависит от часового пояса. Например, часовой пояс Индии находится +05:30 (на пять с половиной часов впереди UTC), в то время как часовой пояс Франции всего на час впереди. Таким образом, момент нового дня в Индии имеет одну дату, в то время как тот же момент во Франции имеет дату “вчера”. Создание строкового вывода без какой-либо информации о часовом поясе или смещении создает двусмысленность. Вы просили выводить данные в формате ГГГГ-ММ-ДД, поэтому я предоставил, но я не рекомендую это делать. Вместо ISO_LOCAL_DATE я бы использовал ISO_DATE для получения этого вывода: 2014-02-25+05:30
DateTimeFormatterformatterOutput= DateTimeFormatter.ISO_LOCAL_DATE; // Caution: The "LOCAL" part means we are losing time zone information, creating ambiguity. Stringoutput= formatterOutput.format( zonedDateTime );
Кстати, этот формат вашей входной строки является стандартным форматом, одним из нескольких удобных форматов строк даты и времени, определенных ISO 8601.
Как Joda-Time, так и java.time по умолчанию используют форматы ISO 8601 при синтаксическом анализе и генерации строковых представлений различных значений даты и времени.
Ответ 4
java.util.Date объект не может представлять дату в пользовательском формате, вместо этого вы должны использовать SimpleDateFormat.format метод, который возвращает string.