如何在 Java 的单行中获取当前日期前六个月的日期?

How to get date six month before current date in single line in Java?

我想在当前日期的六个月前找到一个日期。我试过的代码是:

SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -6);
System.out.println(format.format(c.getTime()));

但我想将其缩减为单行表达式,我想在我的 Jasper 报告中使用它来放入参数表达式。

如何将其简化为单行表达式?

将此 util 方法包装到一个实用程序中 class 构建 jar 并将其放入您的 iReport 的 class 路径中,无论何时编译此 jrxml

使用 Java 8 你可以在一行中做到这一点:

System.out.println(LocalDate.now().minusMonths(6).format(DateTimeFormatter.ofPattern("yyyy/MM/dd")));

如果不能使用Java8考虑使用Joda Time库。

使用Joda库因为DateCalendar

的各种缺点
new DateTime().minusMonths(6).toDate();

Java8更新以下也会好的

LocalDateTime.from(referenceDate.toInstant()).minusMonths(6);

要计算之前的日期,只需执行如下操作,其中 之前的总天数乘以 24 * 60 * 60 * 1000

new Date(System.currentTimeMillis() - 7 * 24 * 60 * 60 * 1000);

其中,从当前日期减去 7 天。

计算服务端的天数并将其作为参数传递给上面的代码行以获取所需的先前日期。

希望对您有所帮助。