TL;博士
java.util.Date.from( // Transfer the moment in UTC, truncating any microseconds or nanoseconds to milliseconds.
Instant.now() ; // Capture current moment in UTC, with resolution as fine as nanoseconds.
)
尽管上面的代码没有意义。 java.sql.*和java.util.Date都表示UTC中的时刻,始终表示UTC。 上面的代码与以下内容具有相同的作用:
new java.util.Date() // Capture current moment in UTC.
这里使用java.sql.*没有任何好处。如果您已经拥有java.util.Date,请提取Instant以适应UTC。
java.util.Date.from( // Truncates any micros/nanos.
myZonedDateTime.toInstant() // Adjust to UTC. Same moment, same point on the timeline, different wall-clock time.
)
其他答案正确
ssoltanid的答案正确解决了您的特定问题,即如何将新式java.time对象(java.sql.*)转换为旧式java.sql.*对象。 从ZonedDateTime中提取java.util.Date,并将其传递到java.sql.*。
资料遗失
请注意,您将遭受数据丢失的困扰,因为java.sql.*自纪元开始跟踪纳秒,而java.util.Date自纪元以来跟踪毫秒。