如何将日历日期转换为yyyy-MM-dd格式。
yyyy-MM-dd
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 2019。但是我需要的是2019-09-26。我的目的是使用Hibernate条件将此日期与数据库中的另一个日期进行比较。所以我需要yyyy-MM-dd格式的日期对象。
inActiveDate = Wed Sep 26 00:00:00 IST 2019
2019-09-26
Hibernate
JavaDate是自1970年1月1日格林尼治标准时间00:00:00以来的毫秒数的容器。
Date
当你使用时System.out.println(date),Java将使用Date.toString()打印内容。
System.out.println(date)
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 Backport
以下内容出于历史目的而保留(作为原始答案)
你可以做的是格式化日期。
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 "2019-09-26" System.out.println(format1.parse(formatted)); // Output "Wed Sep 26 00:00:00 EST 2019"
这些实际上是同一日期,表示方式有所不同。