我在贾斯珀有一个时区敏感的报告,但我似乎不知道如何显示相对于时区的一些日期。
我有一个返回以下格式日期的 View :
“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
没有任何时区的概念'我知道。
关于java - Jasper 报告中的 SimpleDateFormat + java.sql.Timestamp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28875349/