取;新建java.util.Date();提前一个月到达

取;新建java.util.Date();提前一个月到达,java,jasper-reports,ireport,Java,Jasper Reports,Ireport,我正在使用jaspersoft的iReport,我想将新的java.util.Date()(当前日期)转换为该日期之前的一个月。要实现这一点,我应该在文本字段表达式中写些什么?您可以通过以下方式使用该类: Calendar c=Calendar.getInstance(); c.setTime(myDate); //Yes, it is strange!!! But we don't really need this, for the getInstance() results in a cur

我正在使用jaspersoft的iReport,我想将
新的java.util.Date()
(当前日期)转换为该日期之前的一个月。要实现这一点,我应该在文本字段表达式中写些什么?

您可以通过以下方式使用该类:

Calendar c=Calendar.getInstance();
c.setTime(myDate); //Yes, it is strange!!! But we don't really need this, for the getInstance() results in a current date.
c.add(Calendar.MONTH, -1);

在您的评论之后,我意识到我不能将其更改为单个表达式,因为add返回void,而不是new Date()。很抱歉…

您可以使用Joda Time Java API。对对象调用该方法

jrxml文件示例:


结果将是:

注意:
别忘了将Joda时间库添加到类路径中(在我的例子中,我已经将库添加到iReport的类路径中)。

Java Date API是出了名的笨拙,有一个有用的第三方替代方案。尝试导入库

见此帖:

它接受了字符串,没有错误,但它显示为“null”,而不是“05/05/2012”。对不起,没有看到add返回的是无效的,不是更改的日期。请忽略我的表情。得到了我想要的结果!唯一的(小)问题是,它强制转换为2012年5月5日,而不是我更喜欢的2012年5月5日。@precose只添加joda-time-2.1.jar就足够了。你重启JR服务器了吗?你可以使用任何你想要的模式。啊,是的,我很笨。这个问题100%解决了。谢谢你(还有另外两个试着帮忙的人)所做的一切!非常感谢!