将字符串转换为日期 - 无法解析的日期:“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(...)
更改new SimpleDateFormat("MM-dd-yyyy")
为new SimpleDateFormat("mm/dd/yyyy")
所以解析器可以正确解析您的日期输入
好,谢谢。它的工作,但不幸的是,10/26/11仍在底部。仔细查看JRXML之后,我猜测为什么:报告本身不会进行排序。查询检索数据并对它们进行排序。如果'date'是一个String数据类型,那么将它放在底部10/26/11是有意义的。由于我能够在报告中将字符串转换为日期,所以我想知道是否有办法对报告进行排序。 – 2013-03-15 08:22:48
@zack_falcon:恐怕我对这方面的事情一无所知 - 我只是在处理转换部分。 – 2013-03-15 08:35:45
谢谢你一样。至少它得到了报告显示,而以前它只会返回一个错误。 – 2013-03-15 08:42:26