首先,将java.util.Date
对象转换为java.time.Instant
对象。Instant
是表示时间戳的类,可以精确到纳秒级别。
Date date = new Date();
Instant instant = date.toInstant();
然后,使用java.time.ZoneId
类来指定时区,将Instant
对象转换为java.time.LocalDateTime
对象。LocalDateTime
是表示日期和时间的类,不包含时区信息。
ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zoneId);
最后,从LocalDateTime
对象中提取日期部分,得到java.time.LocalDate
对象。
LocalDate localDate = localDateTime.toLocalDate();
最后得到:
使用atStartOfDay()
方法将LocalDate
转换为LocalDateTime
,然后使用ZoneId.systemDefault()
获取系统默认的时区,最后使用toInstant()
将LocalDateTime
转换为Instant
对象。
最后,我们使用Date.from()
方法将Instant
对象转换为Date
对象,即完成了LocalDate
到Date
的转换。
Instant instant1 = localDate.atStartOfDay(ZoneId.systemDefault()).toInstant();
Date date = Date.from(instant1);
最后得到: