日历日期在java中采用yyyy-MM-dd格式Java 8+在 Java 8 之前

2022-08-31 05:50:35

如何将日历日期转换为格式。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();
}

这将产生 .但我需要的是.我的目的是使用Hibernate标准将此日期与数据库中的另一个日期进行比较。所以我需要格式的日期对象。inActiveDate = Wed Sep 26 00:00:00 IST 20122012-09-26yyyy-MM-dd


答案 1

Java 是自 1970 年 1 月 1 日 00:00:00 GMT 以来毫秒数的容器。Date

当您使用类似的东西时,Java 用于打印内容。System.out.println(date)Date.toString()

更改它的唯一方法是覆盖并提供您自己的 实现。现在,在你启动你的IDE并尝试这个之前,我不会;这只会使事情复杂化。最好将日期的格式设置为要使用的(或显示)的格式。DateDate.toString()

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 "2012-09-26"

System.out.println(format1.parse(formatted));
// Output "Wed Sep 26 00:00:00 EST 2012"

这些实际上是相同的日期,表示方式不同。


答案 2

您的代码有误。没有解析日期的点,并将其保留为日期对象。

当您想要显示时,可以设置日历日期对象的格式,并将其保留为字符串。

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();
}