15

如何格式化日期字段(数据库字段)在 Jasper / iReports(4.5.1)中显示文本的一部分

通过报告中的文本字段显示...(请使用 Groovy)

“该日期的小计:” + $F(DEPOSIT_DATE)

我已经尝试过(new SimpleDateFormat("MM/dd/yyyy")).parse($F{DEPOSIT_DATE}),我收到错误消息:

net.sf.jasperreports.engine.fill.JRExpressionEvalException: 
Error evaluating expression : Source text : (new SimpleDateFormat("MM/dd/yyyy")).parse($F{BANK_DATE}) 

我想在我的报告中显示如下...

该日期的小计:MM/DD/YYYY - 格式...

4

4 回答 4

41

试试这个:

new SimpleDateFormat("MM/dd/yyyy").format($F{BANK_DATE})
于 2013-04-04T17:07:17.710 回答
8

我同意 Mateusz,带有模式的textField比 new SimpleDateFormat("someFormat").format("jasperField") 更快。当您处理大量报告时,这一点很重要。这是我的例子

<textField pattern="MM/dd/yyyy" isBlankWhenNull="true">
...
    <textFieldExpression class="java.util.Date"><![CDATA[$F{certIssueDate}]]></textFieldExpression>
</textField>
于 2015-06-01T10:37:26.577 回答
5

看来,您尝试解析而不是格式化(如上所述)。

您还可以在文本字段属性选项卡中使用 Pattern 来漂亮地打印日期,或者手动更改 jrxml 中的模式:

<textField pattern="MM/dd/yyyy">
  <!-- here comes other generated data-->
  <textFieldExpression><![CDATA[$F{BANK_DATE}]]></textFieldExpression>
</textField>
于 2014-12-11T15:32:37.843 回答
3

如果日期字段是字符串值,请说:"2014-11-20"

<field name="dateField" class="java.lang.String"/>

那么你可以这样做

<variable name="THE_DATE" class="java.util.Date">
<variableExpression>
<![CDATA[new java.text.SimpleDateFormat("yyyy-mm-dd").parse($F{dateField})]]>
</variableExpression>
</variable>

<textField pattern="dd/MM/yyyy" isBlankWhenNull="true">
    <reportElement x="0" y="0" width="88" height="20" uuid="47b41787-a8fd-44ea-bf96-7e5484e477fb"/>
    <textElement textAlignment="Left" verticalAlignment="Middle"/>
    <textFieldExpression><![CDATA[ $V{THE_DATE} ]]></textFieldExpression>
</textField>

您可以通过右键单击字段 -> 单击字段模式 -> 选择日期 -> 选择日期模式来设置模式

你也可以这样做

<textField isBlankWhenNull="true">
    <reportElement x="0" y="0" width="88" height="20" uuid="47b41787-a8fd-44ea-bf96-7e5484e477fb"/>
    <textElement textAlignment="Left" verticalAlignment="Middle"/>
    <textFieldExpression class="java.util.Date"><![CDATA[ new java.text.SimpleDateFormat("dd/MM/yyyy").format(new java.text.SimpleDateFormat("yyyy-mm-dd").parse($F{dateField})) ]]></textFieldExpression>
</textField>

但是,如果 DateField 是类型,Date 那么执行以下操作就可以了。

<field name="dateField" class="java.util.Date"/>
<textField pattern="dd/MM/yyyy" isBlankWhenNull="true">
        <reportElement x="0" y="0" width="88" height="20" uuid="47b41787-a8fd-44ea-bf96-7e5484e477fb"/>
        <textElement textAlignment="Left" verticalAlignment="Middle"/>
        <textFieldExpression><![CDATA[ $F{dateField} ]]></textFieldExpression>
</textField>
于 2015-12-14T20:15:24.097 回答