有没有简单的方法可以将LocalDate(Java 8中引入的)转换为java.util.Date对象?
LocalDate
java.util.Date
“简单”是指比这更简单:
Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
对我来说似乎有点尴尬。
由于我们仅对日期部分感兴趣,并且两个对象都没有时区信息,因此为什么要明确引入时区?转换应隐式采用午夜时间和系统默认时区。
其实有。有一个静态方法的valueOf在java.sql.Date这不正是那个对象。所以我们有
java.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();