java - Jasper 报告中的 SimpleDateFormat + java.sql.Timestamp

标签 java sql timezone jasper-reports timestamp

我在贾斯珀有一个时区敏感的报告,但我似乎不知道如何显示相对于时区的一些日期。

我有一个返回以下格式日期的 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/

相关文章:

python-2.7 - 将 Pandas DF 列从 UTC 转换为不带日期的美国东部时间

sql - 函数中的 Postgres %%

SQL Azure 数据不写入?

sql - postgres - 可以使用窗口函数来解决这个查询吗?

python:如何处理时间戳(ISO8601)

Java 在哪里放置大量由用户编写并由程序读取的文件

java - Server和Client之间的同步时钟

java - 如何在JSP三元运算中使用scriptlet值?

java - Spring Boot 3 和 Hibernate 6 迁移错误 : The conversion from datetime2 to DATETIMEOFFSET is unsupported

logging - 更改 Google Cloud Platform 日志中的显示时区