如何在ireport中设置java.util.Date类型参数的默认值?

如何在ireport中设置java.util.Date类型参数的默认值?,java,date,jasper-reports,default,Java,Date,Jasper Reports,Default,在iReport中,我想将java.util.Date类型参数的默认值设置为“2009年9月8日” 我尝试用双引号设置这个值,用new java.util.Date(2009,9,8),用new java.util.Date(1252348200)和new java.util.Date(“08-09-2009”),但这些都不起作用 如何设置日期参数的默认值?使用日历 Calendar c = Calendar.getInstance(); c.set(2009, 8, 8); Date

在iReport中,我想将java.util.Date类型参数的默认值设置为“2009年9月8日”

我尝试用双引号设置这个值,用
new java.util.Date(2009,9,8)
,用
new java.util.Date(1252348200)
new java.util.Date(“08-09-2009”)
,但这些都不起作用

如何设置日期参数的默认值?

使用日历

    Calendar c = Calendar.getInstance();
c.set(2009, 8, 8);
Date d = c.getTime();

带有三个参数(年、月和日)的日期构造函数已弃用。您应该使用GregorianCalendar类。但是,如果您确实需要日期对象,请使用getTime();方法,该方法从GregorianCalendar实例返回日期对象

GregorianCalendar gc = new GregorianCalendar(2009, Calendar.SEPTEMBER, 8);
Date myDate = gc.getTime();

您需要创建新参数,将其类型设置为java.util.Date,并将文本字段的表达式添加为

new SimpleDateFormat("dd MMMM, yyyy").format($P{dateParameter})
单击“预览”时,将出现一个输入弹出窗口

更多

要添加新参数,请执行以下操作:

单击窗口->报表检查器(新的调色板将在左面板上打开)右键单击参数->添加参数->然后从属性中将参数类设置为“java.util.Date”

设置为表达式:

打开字段的表达式编辑器(右键单击->编辑表达式)并粘贴

new SimpleDateFormat("dd MMMM, yyyy").format($P{dateParameter})
根据:

您可以使用GroovyShell在默认值表达式中使用此代码,如下所示:

new groovy.lang.GroovyShell().evaluate("Calendar cal = Calendar.getInstance(); cal.set(2009, 8, 8); return cal.getTime(); ")
更新:
将字段/参数DATE_OBJ(java.util.DATE)和参数dateFormat(java.text.dateFormat)传递给报表。您可以使用日历在日期对象上设置所需的日期 那么下面的表达式应该打印您的日期


我找不到任何直接执行此操作的方法,但这里有一个解决方法:

1) 首先将参数的类型设置为
字符串
,而不是
日期

2) 然后为日期文本输入一个默认值表达式,如下所示:
“2018-01-23”

3) 最后,使用类似以下内容,可能需要根据您使用的SQL类型进行调整:

  • 对于MariaDB(或MySQL)SQL使用:
    STR_TO_DATE($P{From},“%Y-%m-%d”)
    ,其中需要首先用实际参数的名称替换“From”
这使您可以轻松地将默认值编辑为字符串,然后将其用作SQL中的日期类型


SQL使用示例:

`WHERE `journal`.`Date` >=  STR_TO_DATE($P{From},"%Y-%m-%d")`


如果这是静态的,那么为什么要使用文本字段,您可以在静态文本中写入它?这不是
String
type参数。这是
java.util.Date
type参数,已经3年多了。你有没有得到答案?我在这里的答案里似乎找不到任何有用的东西;月数为0时更为清晰based@Nitin我应该在参数中编写整个代码吗?这是一个错误的解决方案。问题是关于JasperReports的表达式
,我不理解您的意思。我给你的代码有问题吗?iReport说无效字符;当我写
。什么是iReport o_o?我想在iReport中为参数设置默认值。@varun its
dd MMMM,yyyy
用于2009年9月8日的
Ok。我在默认值表达式中使用了此代码
新的SimpleDataFormat(“dd-MMMM,yyyy”).format(“2009年9月8日”)
,但它不起作用。我的评论中的第一件事是。我在问你们是否想在你们的报告中有固定的日期,就像这样,为什么你们想要参数?只是把它当作一个静态文本,它有什么问题?由于这是文本字段,它需要一个日期为的db列。我不希望在报告中使用固定日期,但只希望在用户看到输入提示时在参数中使用默认值。编辑后,您需要为其添加新参数
,我知道,semikolon仅用于返回日期结果的scriptText。明白了。但这仍然不起作用。我已选中“作为提示使用”。iReport未显示任何错误,但在提示用户时,它将当前日期显示为默认值。使用按钮“使用默认值!”,则您将成为报告中的默认值