0

JasperReportsを利用するJavaプログラムを実験しています。レポートの(おそらく)単純な「日付を降順で並べ替える」タスクとして始まったものは、「日付」が文字列形式であり、間違った方法ではあるが並べ替えられていることがわかったときに、より複雑になりました。 。例:

  • 2012年3月26日
  • 2012年3月26日
  • 08/11/12
  • 2012年8月26日
  • 2011年10月26日

10/26/11が下に配置されているのは、前に10があるからだと推測できます。

iReport3.0.0を使用してJasperReportを調べたところ、次のことがわかりました。

  • 問題の日付(名前:DTEEFFEC)は、[フィールド]の下で[文字列]に設定されています。
  • textFieldもStringに設定されます。

これによってエラーが発生することはなく、「日付」を降順で並べることが不可能ではないにしても困難になるだけです。

だから私は次のことをしました:

  • DTEEFFECをそのままにしました(文字列)。
  • textFieldをJava.Lang.StringからJava.Util.Dateに変更しました
  • 新しいフィールド式に以下を追加しました。

    new SimpleDateFormat( "MM-dd-yyyy")。parse($ F {DTEEFFEC} .toString())

私は自分の問題について調査した後、そのコードを見つけました。多くの回答は「うまくいった」という線に沿っていましたが、私にとってはそうではありませんでした。

Caused by: java.text.ParseException: Unparseable date: "03/26/2012"

これがJavaプログラムが返すものです。フィールドとtextFieldの両方(文字列値または日付値のいずれかを交互に使用)をいじってみましたが、他のエラーが完全に発生します。

これについて助けてもらえますか?

ありがとう。

その他の情報:iReports 3.0.0を使用してJRXMLファイルを変更し、Eclipseを使用してJavaプログラムを変更しています。Eclipseの参照ライブラリを信じるなら、私はJasperReports3.5.2を使用しています。すべてがWindows7で実行されます。

4

2 に答える 2

8

あなたのコードを見てください:

new SimpleDateFormat("MM-dd-yyyy").parse(...)

それは明らかに「03-26-2012」のような「MM-dd-yyyy」の形式の何かを期待しています。

次に、実際のデータ「2012年3月26日」を見てください。(どうやら、以前のサンプルは2桁の年でしたが...)

ダッシュではなくスラッシュがあります。したがって、パターンを適切に変更する必要があります。

new SimpleDateFormat("MM/dd/yyyy").parse(...)
于 2013-03-15T08:06:32.997 に答える
2

に変更しnew SimpleDateFormat("MM-dd-yyyy")ますnew SimpleDateFormat("mm/dd/yyyy")

そのため、パーサーは入力された日付を正しく解析できます

于 2013-03-15T08:07:46.103 に答える