Java DynamicReports格式与语言环境有关的日期

时间:2012-10-11 08:03:25

标签: java jasper-reports date-formatting

我正在使用 DynamicReports API 来构建报告。

我正在设置报告的区域设置并格式化报告的日期列,但日期的格式总是如 10/12/2009 10:54:44 AM,无论 Locale 是什么。

代码如下:

rep.setTemplate(Templates.reportTemplate.setLocale(res.getLocale()));
...
if (rs.getString(i).contains("00:00:00"))
   rep.addColumn(col.column(title,  name,  type.dateType()));
else
   rep.addColumn(col.column(title,  name,  type.dateYearToSecondType()));

有没有办法自动设置与报告的区域设置相关的日期,还是让我使用自定义 ValueFormatter

2 个答案:

答案 0 :(得分:3)

我也尝试了参数图没有成功

JasperReportBuilder rep = report()
   .setDataSource(query, conn.getConnection())
   .setParameter(JRParameter.REPORT_LOCALE, res.getLocale());
   .setTemplate(Templates.reportTemplate.setLocale(res.getLocale()));

无法自动设置日期格式。 唯一的方法是使用与语言环境相关的日期列的模式。

TextColumnBuilder<Date> column = col.column(title,  name,  type.dateType());
if (res.getLocale().equals("EN") {
  column.setPattern("dd.MM.yyyy");
}
else if (res.getLocale().equals("US") {
  column.setPattern("MM/dd/yyyy");
}
else {
   ...
}
rep.addColumn(column);

答案 1 :(得分:0)

我设法以这种方式在动态jasper中格式化日期字段。

ColumnBuilder time = ColumnBuilder.getNew();
time.setTitle("Login Time");
time.setWidth(200);
time.setColumnProperty("emp.logintime", Date.class.getName()).setPattern("dd/MM/yyyy hh:mm:ss a");
drb.addColumn(time.build());