如何在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报告中使用的单行表达式,以将其放入参数表达式中。

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

使用Java 8您可以单行进行此操作:

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

如果您不能使用Java 8考虑使用Joda Time库。

将此util方法包装到实用程序类中,将其放在ireport的类中,每当您编译此JRXML

要计算上一个日期,只需在之前的总数乘以 24 * 60 * 60 * 1000

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

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

计算服务方面的天数&将其作为参数将其传递到上述代码以获取所需的前日期。

希望这会有所帮助。

使用joda库,因为DateCalendar类的各种缺点

new DateTime().minusMonths(6).toDate();

java 8 更新以下也很好。

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

最新更新