如何将带有毫秒的 java.time.LocalTime 映射到带有毫秒的 java.sql.Time

Dan*_*llo 4 java spring spring-data-jpa spring-boot java-time

如何将java.time.LocalTime带有秒分数(微/毫/纳)的 a 转换为 a java.sql.Time

我知道,由于spring-data-jpa这些类型的 2.x 版本(JSR310)具有映射到旧版本的自定义转换器,但我java.sql.Date在.java.sql.TimestampLocalTime

And*_*eas 5

如何映射java.time.LocalTimejava.sql.Time

这是一种不使用String中间值的方法。

java.time.LocalTime localTime = java.time.LocalTime.now();
long epochMilli = localTime.atDate(java.time.LocalDate.EPOCH)
                           .atZone(java.time.ZoneId.systemDefault())
                           .toInstant()
                           .toEpochMilli();
java.sql.Time sqlTime = new java.sql.Time(epochMilli);

System.out.println(localTime.format(DateTimeFormatter.ofPattern("HH:mm:ss.SSS")));
System.out.println(new SimpleDateFormat("HH:mm:ss.SSS").format(sqlTime));
Run Code Online (Sandbox Code Playgroud)

输出

java.time.LocalTime localTime = java.time.LocalTime.now();
long epochMilli = localTime.atDate(java.time.LocalDate.EPOCH)
                           .atZone(java.time.ZoneId.systemDefault())
                           .toInstant()
                           .toEpochMilli();
java.sql.Time sqlTime = new java.sql.Time(epochMilli);

System.out.println(localTime.format(DateTimeFormatter.ofPattern("HH:mm:ss.SSS")));
System.out.println(new SimpleDateFormat("HH:mm:ss.SSS").format(sqlTime));
Run Code Online (Sandbox Code Playgroud)