“prendre des nouvelles de java.util.Date()” et 1 mois avant
Je suis en utilisant le chiffre d'iReport et je veux tourner la new java.util.Date() (qui est la date du jour) dans 1 mois avant à partir de cette date. Que dois-je écrire dans le champ de texte expression pour y parvenir?
Vous pouvez utiliser Joda-Time Java API. Appelez le minusMonths méthode sur un DateTime objet.
Le fichier jrxml exemple:
<?xml version="1.0" encoding="UTF-8"?><jasperReportxmlns="http://jasperreports.sourceforge.net/jasperreports"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"name="joda_sample"pageWidth="595"pageHeight="842"whenNoDataType="AllSectionsNoDetail"columnWidth="555"leftMargin="20"rightMargin="20"topMargin="20"bottomMargin="20"><importvalue="org.joda.time.DateTime"/><title><bandheight="79"splitType="Stretch"><textField><reportElementx="109"y="23"width="175"height="20"/><textElement/><textFieldExpression><![CDATA["Current date: " + new SimpleDateFormat("dd.MM.yyyy").format(new Date())]]></textFieldExpression></textField><textField><reportElementx="336"y="23"width="200"height="20"/><textElement/><textFieldExpression><![CDATA["Current date minus one month: " + DateTime.now().minusMonths(1).toString("dd.MM.yyyy")]]></textFieldExpression></textField></band></title></jasperReport>
Le résultat sera:
Remarque:
N'oubliez pas d'ajouter Joda-Time library à classpath (dans mon cas, j'ai ajouter de la bibliothèque de la iReport'classpath).
Obtenu le résultat que je cherchais! Le seul (petit) problème, c'est que ça en jette comme 05.05.2012 au lieu de 05/05/2012 que je préfère. Il suffit d'ajouter seulement joda-time-2.1.jar. Avez-vous redémarré JR Serveur? Il n'était pas nécessaire. La date apparaît correctement! Vous pouvez utiliser n'importe quel modèle que vous souhaitez. Bienvenue 🙂
Vous pouvez utiliser le Calendrier de la classe, de la manière suivante:
Calendar c=Calendar.getInstance();
c.setTime(myDate);//Yes, it is strange!!! But we don't really need this, for the getInstance() results in a current date.
c.add(Calendar.MONTH,-1);
J'ai réalisé après votre commentaire que je ne peux pas les changer en une seule expression, pour ajouter des rendements nuls et non le new Date(). Désolé...
Il a accepté la chaîne sans erreur, mais il arrive que 'null' au lieu de '05/05/2012' Désolé - n'ai pas vu qu'ajouter de type void, pas la modification de la date. S'il vous plaît ignorer mon expression.
Vous pouvez utiliser Joda-Time Java API. Appelez le
minusMonths
méthode sur unDateTime
objet.Le fichier jrxml exemple:
Le résultat sera:
Remarque:
N'oubliez pas d'ajouter Joda-Time library à classpath (dans mon cas, j'ai ajouter de la bibliothèque de la iReport'classpath).
Il suffit d'ajouter seulement joda-time-2.1.jar. Avez-vous redémarré JR Serveur?
Il n'était pas nécessaire. La date apparaît correctement!
Vous pouvez utiliser n'importe quel modèle que vous souhaitez.
Bienvenue 🙂
OriginalL'auteur Alex K
La Java Date de l'API est très maladroit, il est utile de tiers alternative. Essayer de l'importer http://joda-time.sourceforge.net/ bibliothèque.
Voir ce post:
L'ajout d'un nombre de jours JodaTime Instant
OriginalL'auteur Clinton Bosch
Vous pouvez utiliser le Calendrier de la classe, de la manière suivante:
J'ai réalisé après votre commentaire que je ne peux pas les changer en une seule expression, pour ajouter des rendements nuls et non le new Date(). Désolé...
Désolé - n'ai pas vu qu'ajouter de type void, pas la modification de la date. S'il vous plaît ignorer mon expression.
OriginalL'auteur rlinden