【发布时间】:2019-03-04 09:14:34
【问题描述】:
我正在使用 Jasper 报告,我想在其中显示选定的日期范围和时间。我使用以下表达式来格式化日期,但它显示的是 GMT 时区的时间。
new SimpleDateFormat("dd-MMM-yyyy").format($P{START_DATE})+" "+new SimpleDateFormat("HH:mm").format($P{startTime})
以上代码给出的日期为 2019 年 3 月 1 日 14:30,根据 IST 应为 2019 年 3 月 1 日下午 8:00。
如何处理时区以显示正确的时间?
【问题讨论】:
-
你试过设置时区吗?
-
是的,我试过但无法将其写在一个语句中。我尝试了以下方法。 new SimpleDateFormat("HH:mm").setTimeZone('IST').format($P{startTime}) - 这会产生错误,因为 format() 不能应用于 void 类型,因为 setTimeZone() 返回 void。
-
是否要求写在一个语句中?
-
是的。我们不能在jasper中编写多行表达式/java代码(一行将是对象创建,在这个对象上调用setTimezone(),然后调用format()来格式化我的输入日期)。
-
我建议你不要使用
SimpleDateFormat。这个类是出了名的麻烦和过时。而是使用DateTimeFormatter和java.time, the modern Java date and time API 中的其他类。
标签: java timezone jasper-reports simpledateformat date-conversion