我想在现在的日期前六个月得到一个日期。我尝试的代码是:
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -6);
System.out.println(format.format(c.getTime()));
但我希望将其减少为单行表达式,我想在Jasper报告中使用它来放入参数表达式。
如何将其减少为单行表达式?
答案 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天。
计算服务方面的天数&将它作为参数传递给上面的代码行,以获得所需的上一个日期。
希望这有帮助。