将字符串转换为日期 - 无法解析的日期:"03/26/2012"

zac*_*con 0 java jasper-reports ireport

我正在尝试使用Jasper Reports的Java程序.当我发现"日期"是字符串格式,并且因此被排序,虽然以错误的方式排序时,开始作为(据称)简单的"按降序排列日期"任务变得更加复杂.例:

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

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

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

  • 在Fields下的相关日期(名称:DTEEFFEC)设置为String.
  • textField也设置为String.

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

所以我做了以下事情:

  • 按原样保留DTEEFFEC(String).
  • 将textField从Java.Lang.String更改为Java.Util.Date
  • 在New Field Expression中添加了以下内容:

    新的SimpleDateFormat("MM-dd-yyyy").解析($ F {DTEEFFEC} .toString())

在对我的问题进行一些研究后,我发现了一些代码.很多回应都是"它有效",但对我来说并非如此.

Caused by: java.text.ParseException: Unparseable date: "03/26/2012"
Run Code Online (Sandbox Code Playgroud)

这就是Java程序返回的内容.我尝试过修改字段和textField(在String或Date值之间交替),但它完全给了我其他错误.

我可以帮忙吗?

谢谢.

其他信息:我使用iReports 3.0.0修改JRXML文件,使用Eclipse编译Java程序.如果要相信Eclipse下的Referenced Libraries,我正在使用JasperReports 3.5.2.整个事情在Windows 7上运行.

Jon*_*eet 8

看看你的代码:

new SimpleDateFormat("MM-dd-yyyy").parse(...)
Run Code Online (Sandbox Code Playgroud)

这显然是期待"MM-dd-yyyy"这样的形式,如"03-26-2012".

现在看看你的实际数据:"03/26/2012".(显然,即使您之前的样本是两位数的年份......)

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

new SimpleDateFormat("MM/dd/yyyy").parse(...)
Run Code Online (Sandbox Code Playgroud)