我在Jasper中有一个时区精细的报告,我似乎真的不知道如何显示相对于时区的几个日期。
我有一个以以下格式返回日期的视图:
"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
没有任何时区的概念。