0

我正在尝试使用 Jasper Reports 的 Java 程序。当我发现“日期”采用字符串格式并因此被排序时,报告的(据说)简单的“按降序排列日期”任务开始变得更加复杂,尽管是以错误的方式进行排序. 例子:

  • 2012 年 3 月 26 日
  • 2012 年 3 月 26 日
  • 2012 年 8 月 11 日
  • 2012 年 8 月 26 日
  • 2011 年 10 月 26 日

我只能猜测 10/26/11 只是因为前面的 10 而放在底部。

我使用 iReport 3.0.0 查看了 Jasper 报告,发现以下内容:

  • 字段下的相关日期(名称:DTEEFFEC)设置为字符串。
  • textField 也设置为 String。

这不会产生任何错误,只会使按降序排列“日期”变得困难,如果不是不可能的话。

所以我做了以下事情:

  • 保留 DTEEFFEC 原样(字符串)。
  • 将 textField 从 Java.Lang.String 更改为 Java.Util.Date
  • 在新字段表达式中添加了以下内容:

    新的 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 文件,以及用于 Java 程序的 Eclipse。如果相信 Eclipse 下的引用库,我使用的是 JasperReports 3.5.2。整个东西在 Windows 7 上运行。

4

2 回答 2

8

看看你的代码:

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

这显然是在期待“MM-dd-yyyy”形式的东西,例如“03-26-2012”。

现在查看您的实际数据:“03/26/2012”。(显然,即使您早期的样本是两位数的年份......)

那是斜线,不是破折号。所以你需要适当地改变你的模式:

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