2013-03-15 113 views
-1

我正在嘗試使用Jasper Reports的Java程序。當我發現'日期'是字符串格式,並因此被排序,雖然以錯誤的方式進行排序,但開始時作爲(假定爲)簡單的「按降序排列日期」任務變得更加複雜。例如:將字符串轉換爲日期 - 無法解析的日期:「03/26/2012」

  • 12年3月26日
  • 12年3月26日
  • 12年8月11日
  • 12年8月26日
  • 11年10月26日

我只能猜測10/26/11是因爲前面10個而放在底部。

我使用的iReport 3.0.0看着碧玉報告,我發現以下幾點:

  • 有問題的日期(名爲:DTEEFFEC),場下被設置爲字符串。
  • textField也設置爲String。

這不會產生任何錯誤,它只會使得如果不是不可能的話按降序排列'日期'就很困難。

所以我做了以下內容:

  • 左DTEEFFEC爲是(字符串)。
  • 改變了文本框從java.lang.String中到Java.Util.Date
  • 添加以下的新領域表達:

    新的SimpleDateFormat( 「MM-DD-YYYY」)解析($ ˚F{} DTEEFFEC的ToString())

我發現的代碼位對我的問題,經過一番研究。很多回復都是「有效」的,但對我而言並非如此。

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

這就是Java程序返回的結果。我試着修改字段和textField(字符串或日期值之間交替),但它完全給了我其他錯誤。

我可以幫忙嗎?

謝謝。

其他信息:我正在使用iReports 3.0.0修改JRXML文件,併爲Eclipse程序修改Eclipse。如果Eclipse下的引用庫是可信的,我使用JasperReports 3.5.2。整個事情運行在Windows 7

回答

7

看看你的代碼:

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

這顯然期待形式「MM-DD-YYYY」的東西,如「2012年3月26日」。

現在看看你的實際數據:「03/26/2012」。 (顯然,即使你以前的樣本是兩位數年...)

這是斜槓,而不是破折號。所以,你需要適當地改變你的模式:

new SimpleDateFormat("MM/dd/yyyy").parse(...) 
+0

好,謝謝。它的工作,但不幸的是,10/26/11仍在底部。仔細查看JRXML之後,我猜測爲什麼:報告本身不會進行排序。查詢檢索數據並對它們進行排序。如果'date'是一個String數據類型,那麼將它放在底部10/26/11是有意義的。由於我能夠在報告中將字符串轉換爲日期,所以我想知道是否有辦法對報告進行排序。 – 2013-03-15 08:22:48

+0

@zack_falcon:恐怕我對這方面的事情一無所知 - 我只是在處理轉換部分。 – 2013-03-15 08:35:45

+0

謝謝你一樣。至少它得到了報告顯示,而以前它只會返回一個錯誤。 – 2013-03-15 08:42:26

2

更改new SimpleDateFormat("MM-dd-yyyy")new SimpleDateFormat("mm/dd/yyyy")

所以解析器可以正確解析您的日期輸入