首页 >Java >java教程 >如何高效地将java.util.Date转换为java.time.LocalDate?

如何高效地将java.util.Date转换为java.time.LocalDate?

Patricia Arquette
Patricia Arquette原创
2024-12-07 01:18:19751浏览

How to Efficiently Convert java.util.Date to java.time.LocalDate?

java.util.Date 到 java.time.LocalDate 的转换

问题:

如何有效地将 java.util.Date 对象转换为较新的 java.time.LocalDate JDK 8/JSR-310 中引入的格式?

简答:

要实现转换,请使用以下代码:

Date input = new Date();
LocalDate date = input.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();

Java 9 解决方案:

更高效的替代方案Java SE 9 中添加了:

Date input = new Date();
LocalDate date = LocalDate.ofInstant(input.toInstant(), ZoneId.systemDefault());

说明:

与它的名字所暗示的不同,java.util.Date 对象表示时间上的一个瞬间,而不是一个具体的日期。要将 java.util.Date 转换为兼容的 java.time.LocalDate,需要执行以下步骤:

  1. 利用 toInstant() 方法获取表示同一时刻的 Instant 对象Date 对象。
  2. 使用 atZone() 方法将特定时区应用于 Instant 对象。可以使用默认系统时区 (ZoneId.systemDefault()) 或自定义时区。
  3. 使用 toLocalDate() 从生成的 ZonedDateTime 对象中提取 LocalDate 对象。

此转换过程说明了 java.util.Date 不包含时区信息的事实。指定时区可以准确转换为特定的本地日期。

以上是如何高效地将java.util.Date转换为java.time.LocalDate?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn