java中的日历日期为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 2012 。但我需要的是 2012-09-26 。我的目的是使用 Hibernate 标准将此日期与我的数据库中的另一个日期进行比较。所以我需要 yyyy-MM-dd 格式的日期对象。

原文由 skmaran.nr.iras 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 663
2 个回答

Java Date 是自 1970 年 1 月 1 日 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 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"

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

原文由 MadProgrammer 发布,翻译遵循 CC BY-SA 4.0 许可协议

你的代码是错误的。没有必要解析日期并将其保留为 Date 对象。

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

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

原文由 Niroshan Abayakoon 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题