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

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

问题描述:

我正在尝试使用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

看看你的代码:

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

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

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