Converting Between java.time.LocalDateTime and java.util.Date
Java 8 introduced a new date and time API, including the java.time.LocalDateTime class for timezone-independent date-with-time values. However, many legacy codebases still use the older java.util.Date class. This raises the question of how to convert between the two classes.
Although there are no direct conversion methods, the following steps provide a solution:
Convert java.util.Date to Instant:
Date in = new Date(); Instant instant = in.toInstant();
Convert Instant to LocalDateTime (specifying Timezone):
LocalDateTime ldt = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
Convert LocalDateTime to ZonedDateTime (specify Timezone):
ZoneId systemZoneId = ZoneId.systemDefault(); ZonedDateTime zdt = ldt.atZone(systemZoneId);
Convert ZonedDateTime to Instant:
Instant convertedInstant = zdt.toInstant();
Convert Instant back to java.util.Date:
Date out = Date.from(convertedInstant);
It's important to note that the conversion to LocalDateTime and back to java.util.Date may result in a different instant due to Daylight Saving Time.
Moreover, java.util.Date uses a different calendar for dates before October 15, 1582, while java.time.* uses the ISO calendar for all time. This difference may affect compatibility when comparing dates before 1582.
The above is the detailed content of How do I convert between java.time.LocalDateTime and java.util.Date?. For more information, please follow other related articles on the PHP Chinese website!