Datetime 如何在输入控件中获取java.sql.Timestamp的默认值表达式

Datetime 如何在输入控件中获取java.sql.Timestamp的默认值表达式,datetime,jasper-reports,Datetime,Jasper Reports,我需要使用class=java.sql.Timestamp 如果使用java.util.Date可以像这样轻松地完成Date(2019,8,28)但它只返回日期 如何使用class=java.sql.Timestamp表示具有日期和时间的默认值表达式,以便它具有日期和时间 执行报告时,它应该在默认输入控件上显示正确的日期和时间。您使用的,因为构造函数时间戳(int year、int month、int date、int hour、int minute、int second、int nano)已被

我需要使用class=
java.sql.Timestamp

如果使用
java.util.Date
可以像这样轻松地完成
Date(2019,8,28)
但它只返回日期

如何使用class=
java.sql.Timestamp
表示具有日期和时间的默认值表达式,以便它具有日期和时间

执行报告时,它应该在默认输入控件上显示正确的日期和时间。

您使用的,因为构造函数
时间戳(int year、int month、int date、int hour、int minute、int second、int nano)
已被弃用

在您的情况下,如果您只想使用jasper reports的
DATE
函数(无时间),则表达式为

new java.sql.Timestamp(DATE(2019,8,28).getTime())
返回构造函数中所需的自1970年1月1日00:00:00 GMT以来的毫秒数

如果您还需要指定jasper reports没有功能的时间,我将使用Java 8(见下文),但是如果这不可能,您可以使用,但您需要符合格式
yyy-[m]m-[d]d hh:mm:ss[.f..]

java.sql.Timestamp.valueOf("2019-01-31 14:12:01")
如果您有其他格式,例如可以解析您的值

new java.sql.Timestamp(new java.text.SimpleDateFormat("yyyy/MM/dd HH:mm").parse("2019/08/29 12:13").getTime()) 
爪哇8 如果您喜欢使用Java8中引入的
java.time
包(它是线程安全的,处理更清晰的时区等),可以使用类似的表达式

new java.sql.Timestamp(java.time.LocalDate.of(2019, 08, 28).atTime(0,0).atZone(java.time.ZoneId.systemDefault()).toInstant().toEpochMilli())
或者,如果您想直接在构造函数中指定时间,请使用

要了解更多信息,请参阅

new java.sql.Timestamp(java.time.LocalDateTime.of(2015, 02, 20, 12, 40, 25).atZone(java.time.ZoneId.systemDefault()).toInstant().toEpochMilli())