Jasper Reports 中的 SimpleDateFormat + java.sql.Timestamp

SimpleDateFormat + java.sql.Timestamp in Jasper Reports

我在 Jasper 中有一个时区敏感的报告,但我似乎无法弄清楚如何显示与时区相关的几个日期。

我认为 returns 日期格式如下:

"2015-03-02 11:45:00+01"

"2015-03-02 23:59:59+01"

"2015-03-03 00:00:00+01"

"2015-03-03 08:00:00+01"

"2015-03-03 09:20:00+01"

"2015-03-03 11:00:00+01"

"2015-03-03 09:00:00+01"

"2015-03-03 09:30:00+01"

等(注意最后的+01)

在我的报告中,我有:

new SimpleDateFormat("HH:mm", $P{REPORT_LOCALE}).format($F{start_date});

但是,例如,对于“2015-03-02 11:45:00+01”,我没有显示 12:45,而是显示 11:45。

此外,我需要总结小时数(它们是时间间隔),这给了我 1 小时(在本例中)的错误。

谁能帮我显示正确的时间?

谢谢!

SimpleDateFormat 采用 Date,而不是 Calendar - 这意味着它不能在值本身中提供时区。

假设您需要坚持使用 SimpleDateFormat(而不是使用 Joda Time 或 Java 8 的 java.time),那么您需要在SimpleDateFormat 本身。如果您需要从数据中获取时区(而不是报告范围内的时区),那么您需要在格式化每个值之前调用 setTimeZone - 当然,您将 另外 需要确保您在值中有时区,据我所知,java.sql.Timestamp 没有任何时区的概念。