Home >Java >javaTutorial >How to Convert java.util.Date to java.time.LocalDate?
Converting java.util.Date to java.time.LocalDate
The java.time package introduced in JDK 8/JSR-310 provides a more modern and comprehensive date and time API than the legacy java.util.Date class. Converting a java.util.Date object to the new java.time.LocalDate can be done effectively using the following steps:
1. Convert to Instant:
The java.util.Date class represents an instant in time as milliseconds since the epoch. To convert a java.util.Date object to an instant, use the toInstant() method.
Date input = new Date(); Instant instant = input.toInstant();
2. Apply Time Zone:
An instant does not contain timezone information. To convert it to a local date, we need to apply a timezone. Use the atZone() method with the desired timezone.
ZonedDateTime zdt = instant.atZone(ZoneId.systemDefault());
3. Extract LocalDate:
A ZonedDateTime contains both the date and time, as well as the timezone. To extract the LocalDate, use the toLocalDate() method.
LocalDate date = zdt.toLocalDate();
Java 9 Simplification:
Java 9 introduced a new method to simplify this conversion:
LocalDate date = LocalDate.ofInstant(input.toInstant(), ZoneId.systemDefault());
This method directly converts the instant to a LocalDate using the default timezone. It is more concise and efficient than the previous approach.
The above is the detailed content of How to Convert java.util.Date to java.time.LocalDate?. For more information, please follow other related articles on the PHP Chinese website!