首页  >  文章  >  Java  >  如何将`java.util.Date`转换为`java.time`类型?

如何将`java.util.Date`转换为`java.time`类型?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-05 19:05:02774浏览

How to Convert `java.util.Date` to `java.time` Types?

将 java.util.Date 转换为什么“java.time”类型?

说明:

与遗留的 java.util 类相比,java.time 框架提供了现代且改进的日期和时间类。该框架提供了更多的灵活性、精度和功能。当使用仍然使用 java.util 类型的遗留代码时,必须能够在两个框架之间进行转换。

转换选项:

1 。从 java.util.Date 到 java.time.Instant:

  • Instant 表示 UTC 时间线上的特定时刻,精度为纳秒。
  • 到从 java.util.Date 转换,在 Date 对象上使用 .toInstant() 方法:

    <code class="java">Instant instant = myUtilDate.toInstant();</code>

2.从 java.util.Calendar 到 Instant:

  • 日历内部以从纪元开始的毫秒为单位跟踪时间。
  • 要从日历转换,请使用 .toInstant( ) 方法:

    <code class="java">Instant instant = myUtilCalendar.toInstant() ;</code>

    3.从 java.util.GregorianCalendar 到 ZonedDateTime:

  • GregorianCalendar 包含时区信息。
  • 要进行转换,请将 Calendar 向下转换为 GregorianCalendar 并使用 .toZonedDateTime()获取 ZonedDateTime 的方法:

    <code class="java">if (myUtilCalendar instanceof GregorianCalendar) {
      GregorianCalendar gregCal = (GregorianCalendar) myUtilCalendar;
      ZonedDateTime zdt = gregCal.toZonedDateTime();
    }</code>

4.从 Instant 到其他 java.time 类型:

  • OffsetDateTime:表示与 UTC 偏移的时间点(例如,东部时间为“-04:00”)。
  • ZonedDateTime:表示具有特定时区的时间点。
  • LocalDate:表示没有时间或时区的日期。
  • LocalTime:表示没有日期或时间的时间zone.
  • LocalDateTime:表示没有时区的日期和时间(仅用于粗略近似)。

从 java.time 类型到 java.util 的转换.Date:

  • 要从 Instant 转换为 Date,请提取 Instant,然后在 Date 上应用 .toInstant():

    <code class="java">java.util.Date myUtilDate = java.util.Date.from(instant);</code>
  • 可以从 OffsetDateTime 和 ZonedDateTime 完成类似的转换。

注意:

从 java.time 类型转换为 java.util 类型时,精度可能为丢失是因为 java.util.Date 和 java.util.Calendar 只处理毫秒,而 java.time 类型具有纳秒精度。

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

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