JasperReports中的日期区域设置

时间:2014-07-27 13:16:05

标签: java mysql jasper-reports

我正在编写一个使用 JasperReports 生成报告的Java程序。报告的一个字段是日期字段。我发送locale变量:

    Map parametersMap = new HashMap();
    parametersMap.put(JRParameter.REPORT_LOCALE, myLocale2);

这工作正常,但问题是时间也出现在日期字段中。我在MySQL中使用了DATE()函数,但我仍然在报告中花时间。我只需要显示日期(在适当的区域设置)。如果我在报告中设置模式变量,使得日期以特定格式显示,那么时间将不会出现,但这将取消语言环境设置,我不希望这样。有人可以告诉我如何摆脱时间信息?

2 个答案:

答案 0 :(得分:1)

你可以试试这个:

  1. 使用参数发送您的格式化日期。 e.g:
  2. 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报告通过额外的代码行完成工作而不是用户。