>我需要为我的日期时间输入控件输入默认值表达式,并使用类 =java.sql.Timestamp
如果使用java.util.Date
可以很容易地像这样完成DATE(2019,8,28)
但它只返回日期。
如何使用类 =java.sql.Timestamp
表示默认值表达式以具有日期和时间,以便它具有日期和时间?
执行报表时,它应在默认输入控件上显示正确的日期和时间。
你使用new java.sql.Timestamp(long time)
,因为构造函数Timestamp(int year,int month,int date,int hour,int minute,int second,int nano)
已被弃用
在您的情况下,如果您只想使用 jasper 报告的DATE
函数(没有时间(,表达式将是
new java.sql.Timestamp(DATE(2019,8,28).getTime())
getTime()
返回自 1970 年 1 月 1 日 00:00:00 GMT 以来构造函数中所需的毫秒
数如果你还需要指定时间 jasper-reports没有功能,我会使用Java 8(见下文(,但是如果这是不可能的,你可以使用Timestamp.valueOf
但你需要符合格式yyyy-[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
如果你喜欢使用java 8中引入的java.time
包(它是线程安全的,处理更清晰的时区等(,可以使用类似的表达式。
new java.sql.Timestamp(java.time.LocalDate.of(2019, 08, 28).atTime(0,0).atZone(java.time.ZoneId.systemDefault()).toInstant().toEpochMilli())
或者,如果您想直接在构造函数中指定时间,请使用 LocaDateTime.of
new java.sql.Timestamp(java.time.LocalDateTime.of(2015, 02, 20, 12, 40, 25).atZone(java.time.ZoneId.systemDefault()).toInstant().toEpochMilli())
要了解更多信息,请参阅java.time
API