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

时间:2015-05-05 05:30:46

标签: java jasper-reports

我想在现在的日期前六个月得到一个日期。我尝试的代码是:

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

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

如何将其减少为单行表达式?

3 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:4)

将此util方法包装到Utility类中,构建jar并将其放在iReport的classpath中,并在编译此jrxml时

答案 2 :(得分:1)

要计算上一个日期,请执行以下操作:前一天的总天数乘以24 * 60 * 60 * 1000

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

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

计算服务方面的天数&将它作为参数传递给上面的代码行,以获得所需的上一个日期。

希望这有帮助。