我正在编写一个使用 JasperReports 生成报告的Java程序。报告的一个字段是日期字段。我发送locale变量:
Map parametersMap = new HashMap();
parametersMap.put(JRParameter.REPORT_LOCALE, myLocale2);
这工作正常,但问题是时间也出现在日期字段中。我在MySQL中使用了DATE()函数,但我仍然在报告中花时间。我只需要显示日期(在适当的区域设置)。如果我在报告中设置模式变量,使得日期以特定格式显示,那么时间将不会出现,但这将取消语言环境设置,我不希望这样。有人可以告诉我如何摆脱时间信息?
答案 0 :(得分:1)
你可以试试这个:
parametersMap.put("date", new SimpleDateFormat("MMM dd yyyy", Locale.FRANCE)
.format(new Date()));
在报告中设置此日期。
享受。
答案 1 :(得分:0)
user1791574提供的答案对我来说很好。但是,我发现了一种更好的方法,特别是如果日期字段出现在多个记录的子报表中。在这种情况下,不可能将日期作为参数发送,因为我们不知道子报告中有多少记录。我找到的解决方案是从http://community.jaspersoft.com/questions/532484/default-date-format-only-date获得的,它包含使用以下代码:
DateFormat.getDateInstance(DateFormat.SHORT, $P{REPORT_LOCALE}).format( $P{MyDateParam} )
这两种方式都运行良好,但这种方式更自然"因为jasper报告通过额外的代码行完成工作而不是用户。