Календарная дата в формате гггг-ММ-ДД на java
как конвертировать календарную дату в .
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1);
Date date = cal.getTime();
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
String date1 = format1.format(date);
Date inActiveDate = null;
try {
inActiveDate = format1.parse(date1);
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
это произведет inActiveDate = Wed Sep 26 00:00:00 IST 2012. Но то, что мне нужно-это 2012-09-26. Моя цель-сравнить эту дату с другой датой в моей базе данных, используя критерии Hibernate. Поэтому мне нужен объект даты в .
9 ответов:
A Java
Dateявляется контейнером для количества миллисекунд с 1 января 1970 года, 00: 00: 00 GMT.когда вы используете что-то вроде
System.out.println(date), Java используетDate.toString()для печати содержимого.единственный способ изменить это, чтобы переопределить
Dateи обеспечить свою собственную реализациюDate.toString(). Теперь, прежде чем вы запустите свою IDE и попробуете это, я бы не стал; это только усложнит дело. Вам лучше форматировать дату в формат, который вы хотите использовать (или дисплей.)Java 8+
LocalDateTime ldt = LocalDateTime.now().plusDays(1); DateTimeFormatter formmat1 = DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.ENGLISH); System.out.println(ldt); // Output "2018-05-12T17:21:53.658" String formatter = formmat1.format(ldt); System.out.println(formatter); // 2018-05-12до Java 8
вы должны использовать Портировать ThreeTen
следующее сохраняется в исторических целях (как исходный ответ)
что вы можете сделать, это формат даты.
Calendar cal = Calendar.getInstance(); cal.add(Calendar.DATE, 1); SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd"); System.out.println(cal.getTime()); // Output "Wed Sep 26 14:23:28 EST 2012" String formatted = format1.format(cal.getTime()); System.out.println(formatted); // Output "2012-09-26" System.out.println(format1.parse(formatted)); // Output "Wed Sep 26 00:00:00 EST 2012"это фактически одна и та же дата, представленная по-разному.
ваш код неверен. Нет смысла разбирать дату и сохранять ее как объект даты.
вы можете отформатировать объект даты календаря, когда вы хотите отобразить и сохранить его в виде строки.
Calendar cal = Calendar.getInstance(); cal.add(Calendar.DATE, 1); Date date = cal.getTime(); SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd"); String inActiveDate = null; try { inActiveDate = format1.format(date); System.out.println(inActiveDate ); } catch (ParseException e1) { // TODO Auto-generated catch block e1.printStackTrace(); }
java.время
The ответ от MadProgrammer правильно, особенно совет о Joda Времени. Преемник Joda-Time теперь встроен в Java 8 как новый java.пакет времени. Вот пример кода в Java 8.
при работе с датой-временем (в отличие от местных дата),часовой пояс в критическом состоянии. День месяца зависит от часового пояса. Например, часовой пояс Индии и
+05:30(на пять с половиной часов раньше UTC), в то время как Франция только на один час вперед. Таким образом, момент в новом дне в Индии имеет одну дату, в то время как тот же момент во Франции имеет "вчерашнюю" дату. Создание строкового вывода без какой-либо информации о часовом поясе или смещении создает неоднозначность. Вы попросили выход YYYY-MM-DD, поэтому я предоставил, но я не рекомендую его. ВместоISO_LOCAL_DATEя бы использовалISO_DATEполучить этот вывод:2014-02-25+05:30ZoneId zoneId = ZoneId.of( "Asia/Kolkata" ); ZonedDateTime zonedDateTime = ZonedDateTime.now( zoneId ); DateTimeFormatter formatterOutput = DateTimeFormatter.ISO_LOCAL_DATE; // Caution: The "LOCAL" part means we are losing time zone information, creating ambiguity. String output = formatterOutput.format( zonedDateTime );дамп в консоли...
System.out.println( "zonedDateTime: " + zonedDateTime ); System.out.println( "output: " + output );при запуске...
zonedDateTime: 2014-02-25T14:22:20.919+05:30[Asia/Kolkata] output: 2014-02-25Joda Времени
аналогичный код с помощью Joda Времени библиотека, предшественник java.время.
DateTimeZone zone = new DateTimeZone( "Asia/Kolkata" ); DateTime dateTime = DateTime.now( zone ); DateTimeFormatter formatter = ISODateTimeFormat.date(); String output = formatter.print( dateTime );ISO 8601
кстати, этот формат вашей входной строки является стандартным форматом, одним из нескольких удобных форматов строк даты и времени, определенных ISO 8601.
как Joda времени и Ява.время использовать форматы ISO 8601 по умолчанию при анализе и генерации строковых представлений различных значений даты-времени.
java.util.Dateобъект не может представлять дата на custom формат вместо этого вы должны использоватьSimpleDateFormat.formatметод, который возвращаетstring.String myString=format1.format(date);
для того, чтобы разобрать a
java.util.Dateобъект вы должны сначала преобразовать его в строку, используя свой собственный формат.inActiveDate = format1.parse( format1.format(date) );но я считаю, что вы здесь излишни.
Calendar cal = Calendar.getInstance(); cal.add(Calendar.DATE, 7); Date date = c.getTime(); SimpleDateFormat ft = new SimpleDateFormat("MM-dd-YYYY"); JOptionPane.showMessageDialog(null, ft.format(date));это отобразит вашу дату + 7 дней в формате месяца, дня и года в окне JOption.
public static void main(String[] args) { Calendar cal = Calendar.getInstance(); cal.set(year, month, date); SimpleDateFormat format1 = new SimpleDateFormat("yyyy MM dd"); String formatted = format1.format(cal.getTime()); System.out.println(formatted); }
Я нашел этот код, где дата сравнивается в формате для сравнения с полем даты в базе данных...может быть, это может быть полезно для вас...
при преобразовании строки в дату с помощью simpledateformat, это трудно сравнить с полем даты в базах данных mysql.
Итак, преобразуйте дату строки java в формат, используя select STR_to_DATE ('yourdate','%m/%d/%Y') -- > в этом формате, тогда вы получите точный формат даты mysql date поле.
http://javainfinite.com/java/java-convert-string-to-date-and-compare/
public static String ThisWeekStartDate(WebDriver driver) { Calendar c = Calendar.getInstance(); //ensure the method works within current month c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); System.out.println("Before Start Date " + c.getTime()); Date date = c.getTime(); SimpleDateFormat dfDate = new SimpleDateFormat("dd MMM yyyy hh.mm a"); String CurrentDate = dfDate.format(date); System.out.println("Start Date " + CurrentDate); return CurrentDate; } public static String ThisWeekEndDate(WebDriver driver) { Calendar c = Calendar.getInstance(); //ensure the method works within current month c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY); System.out.println("Before End Date " + c.getTime()); Date date = c.getTime(); SimpleDateFormat dfDate = new SimpleDateFormat("dd MMM yyyy hh.mm a"); String CurrentDate = dfDate.format(date); System.out.println("End Date " + CurrentDate); return CurrentDate; }
Comments