我正在使用 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 ?
答案 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());