SimpleDateFormat + java.sql.Timestamp in Jasper Reports



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

相关内容

  • 没有找到相关文章