我在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)
在我的报告中,我有:
新的SimpleDateFormat(" HH:mm",$ P {REPORT_LOCALE})。格式($ F {start_date});
然而,例如,对于" 2015-03-02 11:45:00 + 01"我没有得到12:45,我得到11:45。
另外,我需要总结一下小时数(它们的间隔时间),这给我1小时(在这种情况下)错误。
任何人都可以帮助我显示正确的时间吗?
谢谢!
答案 0 :(得分:1)
SimpleDateFormat
需要Date
,而不是Calendar
- 这意味着无法在值本身中提供时区。
假设您需要坚持使用SimpleDateFormat
(例如,而不是使用Joda Time或Java 8的java.time
),那么您需要在SimpleDateFormat
本身设置时区。如果您需要从数据中获取时区(而不是具有报表范围的区域),那么您需要在格式化每个值之前调用setTimeZone
- 当然,您还也< / em>需要确保你已经获得了值的时区,java.sql.Timestamp
没有任何时区概念,据我所知。