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

时间:2013-03-15 08:01:02

标签: java jasper-reports ireport

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

  • 03/26/12
  • 03/26/12
  • 08/11/12
  • 08/26/12
  • 11年10月26日

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

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

  • 相关日期(名称为: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(在String或Date值之间交替),但它完全给了我其他错误。

我可以帮忙解决这个问题吗?

感谢。

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

2 个答案:

答案 0 :(得分:8)

看看你的代码:

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

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

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

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

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

答案 1 :(得分:2)

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

因此解析器可以正确解析您的日期输入