web-dev-qa-db-ja.com

Jasper / ireportsのテキストの日付フォーマット部分

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-形式...

12
Meeza S

これを試して:

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

私はMateuszに同意しますtextField with pattern perfrormesはnew SimpleDateFormat( "someFormat")。format( "jasperField")よりも高速です。巨大なレポートを扱う場合に重要です。これは私の例です

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

(上記のように)フォーマットの代わりに解析しようとしているようです。

テキストフィールドの[プロパティ]タブでパターンを使用して日付をきれいに出力したり、jrxmlでパターンを手動で変更したりすることもできます。

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

日付フィールドが文字列値の場合、次のようにします:"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>
2
codereal