时
我想从现在日期起六个月之前获得一个日期。我尝试的代码是:
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库,因为Date
和Calendar
类的各种缺点
new DateTime().minusMonths(6).toDate();
在 java 8 更新以下也很好。
LocalDateTime.from(referenceDate.toInstant()).minusMonths(6);