Home  >  Article  >  Java  >  How to Convert `java.util.Date` to `java.time` Types?

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

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-05 19:05:02718browse

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

Convert java.util.Date to what “java.time” type?

Explanation:

The java.time framework provides modern and improved date and time classes compared to the legacy java.util classes. This framework offers more flexibility, precision, and functionality. When working with legacy code that still uses java.util types, it's necessary to be able to convert between the two frameworks.

Conversion Options:

1. From java.util.Date to java.time.Instant:

  • Instant represents a specific moment in time on the UTC timeline with nanosecond precision.
  • To convert from java.util.Date, use the .toInstant() method on the Date object:

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

2. From java.util.Calendar to Instant:

  • Calendar internally tracks time as milliseconds from the epoch.
  • To convert from Calendar, use the .toInstant() method:

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

    3. From java.util.GregorianCalendar to ZonedDateTime:

  • GregorianCalendar includes time zone information.
  • To convert, downcast Calendar to GregorianCalendar and use the .toZonedDateTime() method to obtain a ZonedDateTime:

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

4. From Instant to Other java.time Types:

  • OffsetDateTime: Represents a point in time with an offset from UTC (e.g., "-04:00" for Eastern Time).
  • ZonedDateTime: Represents a point in time with a specific time zone.
  • LocalDate: Represents a date without a time or time zone.
  • LocalTime: Represents a time without a date or time zone.
  • LocalDateTime: Represents both a date and a time without a time zone (only for rough approximations).

Conversions from java.time Types to java.util.Date:

  • To convert from Instant to Date, extract the Instant and then apply .toInstant() on the Date:

    <code class="java">java.util.Date myUtilDate = java.util.Date.from(instant);</code>
  • Similar conversions can be done from OffsetDateTime and ZonedDateTime.

Note:

When converting from java.time types to java.util types, precision may be lost because java.util.Date and java.util.Calendar only handle milliseconds while java.time types have nanosecond precision.

The above is the detailed content of How to Convert `java.util.Date` to `java.time` Types?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn