2013-04-04 29 views
7

我如何格式化日期字段(數據庫字段)顯示在賈斯珀/ iReports(4.5.1)日期格式賈斯珀/ ireports文本的一部分

通過的文本字段在報告中顯示文本的一部分。 ..(使用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 - 格式...

回答

24

試試這個:

new SimpleDateFormat("MM/dd/yyyy").format($F{BANK_DATE}) 
3

看來,您嘗試解析而不是格式化(如上所述)。

你也可以使用模式在文本框屬性選項卡,以漂亮的打印日期,或手動更改JRXML模式:

<textField pattern="MM/dd/yyyy"> 
    <!-- here comes other generated data--> 
    <textFieldExpression><![CDATA[$F{BANK_DATE}]]></textFieldExpression> 
</textField> 
3

我Mateusz同意,文本框模式 perfrormes快於新的SimpleDateFormat(「someFormat」).format(「jasperField」)。當處理大量報告時,這很重要。這是我的例子

<textField pattern="MM/dd/yyyy" isBlankWhenNull="true"> 
... 
    <textFieldExpression class="java.util.Date"><![CDATA[$F{certIssueDate}]]></textFieldExpression> 
</textField> 
0

如果日期欄是一個字符串值,說:"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>