一尘不染

LocalDate到java.util.Date的转换,反之亦然?

java

有没有简单的方法可以将LocalDate(Java 8中引入的)转换为java.util.Date对象?

“简单”是指比这更简单:

Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());

对我来说似乎有点尴尬。

由于我们仅对日期部分感兴趣,并且两个对象都没有时区信息,因此为什么要明确引入时区?转换应隐式采用午夜时间和系统默认时区。


阅读 233

收藏
2020-09-08

共1个答案

一尘不染

其实有。有一个静态方法的valueOfjava.sql.Date这不正是那个对象。所以我们有

java.util.Date date = java.sql.Date.valueOf(localDate);

就是这样。没有明确设置时区,因为本地时区是隐式获取的。

从文档:

提供的LocalDate解释为本地时区中的本地日期。

java.sql.Date子类java.util.Date这样的结果是java.util.Date也。

对于反向操作,java.sql.Date类中有一个toLocalDate方法。因此,我们有:

LocalDate ld = new java.sql.Date(date.getTime()).toLocalDate();

2020-09-08