2012-01-25 6 views
4

私は$ F {Fecha}と呼ばれるタイムスタンプtextFieldを持っており、その日、月、および年から取得したいと思います。私は3つの変数var1、var2、var3を作成し、それらの式に次の$ F {Fecha} .getDay()、$ F {Fecha} .getMonth()、$ F {Fecha} .getYear() ;それは私に戻り値を与えますが、間違った値です。すなわち、私の日付が20120118なら、私はday = 3、month = 0、yearh = 112を返します。getDay()、getMonth()、getYear()

これを修正するにはどうすればよいですか? ありがとうございます。

PD。私はiReport 4.0.0を使用しています

+0

フィールド 'Fecha'このような宣言を有するべきである:' <フィールド名= "Fechaを"class =" java.util.Date "/>'あなたは同じですか? –

+0

いいえ、私はしません。それはタイムスタンプですが、これを使って解決しました: 日:$ F {Fecha} .toString()。substring(0,10).substring(8,10) 月:$ F {Fecha} .toString()。substring() 0,7).substring(5,7) 年:$ F {Fecha} .toString()。substring(0,4) – GuzZpaWn

+0

私はそれは非常に良い解決策ではないと思う。 –

答えて

1

私はアレックスとあります:日付情報を引き出す文字列解析は悪い考えです。たとえば、別のロケールを使用してレポートを実行すると、予期しない方法でレポートが中断することがあります。

Javaには、この目的のために日付処理が組み込まれていません。しかし、あなたはJoda-TimeやApache Commons Langを使って、役に立つ機能を得ることができます。

0

可能であれば、SQLでこれを行うことができます。

MySQLには、これを行うMONTH()、DAY()、YEAR()関数があります。ここで

1

は、Java式でそれを行う方法です:

日: 新しい整数($ F {Fecha} .getDate())

月: 新しい整数($ F {Fecha} .getMonth()+ 1)

年: 新しい整数($ F {} Fecha .getYear()+ 1900)

+0

右!問題は:jasperReportsでは、クラス全体の参照を使用する必要があります – Alfabravo

関連する問題