web-dev-qa-db-fra.com

Date de formatage d'une partie du texte dans Jasper/ireports

comment formater un champ de date (champ de base de données) affichant une partie d'un texte dans Jasper/iReports (4.5.1)

Affiché via un champ de texte dans le rapport ... (veuillez utiliser Groovy)

"Total partiel pour cette date:" + $ F (DEPOSIT_DATE)

J'ai essayé (new SimpleDateFormat("MM/dd/yyyy")).parse($F{DEPOSIT_DATE})et j'obtiens un message d'erreur:

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

Ce que je veux afficher dans mon rapport est le suivant ...

Sous total pour cette date: MM/JJ/AAAA - format ...

8
Meeza S

Essaye ça:

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

Je suis d’accord avec Mateusz, textField avec pattern perfrormes plus rapidement que le nouveau SimpleDateFormat ("someFormat"). Format ("jasperField"). C'est important lorsque vous avez affaire à d'énormes rapports. Ceci est mon exemple

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

Il semble que vous essayiez d'analyser au lieu de formater (comme indiqué ci-dessus).

Vous pouvez également utiliser Motif dans l'onglet Propriétés du champ de texte pour imprimer la date en beauté ou modifier manuellement le motif dans le fichier jrxml:

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

si le champ Date est une valeur de chaîne, dites: "2014-11-20"

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

alors tu peux faire ça

<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>

Vous pouvez définir le modèle en cliquant Avec le bouton droit de la souris sur le champ -> cliquez sur le modèle de champ -> Sélectionner la date -> Choisir un modèle de date

tu peux aussi faire ça

<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>

Cependant, si le champ DateField est de type Date , Il est préférable de procéder comme suit.

<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>
0
codereal