Jasper Reports中的SimpleDateFormat + java.sql.Timestamp

时间:2015-03-05 10:18:50

标签: java sql timezone jasper-reports timestamp

我在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小时(在这种情况下)错误。

任何人都可以帮助我显示正确的时间吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

SimpleDateFormat需要Date,而不是Calendar - 这意味着无法在值本身中提供时区。

假设您需要坚持使用SimpleDateFormat(例如,而不是使用Joda Time或Java 8的java.time),那么您需要在SimpleDateFormat本身设置时区。如果您需要从数据中获取时区(而不是具有报表范围的区域),那么您需要在格式化每个值之前调用setTimeZone - 当然,您还也< / em>需要确保你已经获得了值的时区,java.sql.Timestamp没有任何时区概念,据我所知。