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
没有任何时区的概念。
我在 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
没有任何时区的概念。