3

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

我正在设置报告的语言环境并格式化报告的日期列,但无论语言环境是什么,日期的格式总是像10/12/2009 10:54:44 AM 。

代码如下所示:

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

4

2 回答 2

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);
于 2012-10-14T08:40:12.603 回答
0

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

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());
于 2015-03-17T07:07:57.707 回答