This Convert LocalDate, LocalDateTime and ZonedDateTime to Date tutorial shows you my knowledge about conversion between LocalDate, LocalDateTime and ZonedDateTime to the classic java.util.Date in Java 8.
As you know the class java.util.Date represents a specific instant in time, with millisecond precision. It means that java.util.Date doesn’t contain time zone and only represents the number of seconds passed since the Unix epoch time – 1970-01-01T00:00:00Z (midnight at the start of January 1, 1970 GMT/UTC).
Convert LocalDate to Date
1 2 3 |
ZoneId defaultZoneId = ZoneId.systemDefault(); LocalDate localDate = LocalDate.now(); Date date = Date.from(localDate.atStartOfDay(defaultZoneId).toInstant()); |
Or
1 2 3 |
ZoneId defaultZoneId = ZoneId.systemDefault(); LocalDate localDate = LocalDate.of(2016, 11, 2); Date date = Date.from(localDate.atStartOfDay(defaultZoneId).toInstant()); |
Convert LocalDateTime to Date
1 2 3 |
ZoneId defaultZoneId = ZoneId.systemDefault(); LocalDateTime localDateTime = LocalDateTime.now(); Date date2 = Date.from(localDateTime.atZone(defaultZoneId).toInstant()); |
Or
1 2 3 |
ZoneId defaultZoneId = ZoneId.systemDefault(); LocalDateTime localDateTime = LocalDateTime.of(2016,11,2,21,56,31); Date date2 = Date.from(localDateTime.atZone(defaultZoneId).toInstant()); |
Convert ZonedDateTime to Date
1 2 3 |
ZoneId defaultZoneId = ZoneId.systemDefault(); ZonedDateTime zonedDateTime = localDateTime.atZone(defaultZoneId); Date date3 = Date.from(zonedDateTime.toInstant()); |
Create a program for testing
Now, we create main class to show how the above examples works.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
package com.javabycode.date; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; import java.util.Date; public class ConvertJavaTimeToDate { public static void main(String[] args) { ZoneId defaultZoneId = ZoneId.systemDefault(); LocalDate localDate = LocalDate.of(2016, 11, 2); LocalDate localDate2 = LocalDate.now(); Date date = Date.from(localDate.atStartOfDay(defaultZoneId).toInstant()); Date date1 = Date.from(localDate2.atStartOfDay(defaultZoneId).toInstant()); System.out.println("LocalDate -> Date"); System.out.println("localDate : " + localDate + " -> " + "date : " + date); System.out.println("localDate : " + localDate2 + " -> " + "date : " + date1); LocalDateTime localDateTime = LocalDateTime.of(2016, 11, 2, 21, 56, 31); LocalDateTime localDateTime2 = LocalDateTime.now(); Date date3 = Date.from(localDateTime.atZone(defaultZoneId).toInstant()); Date date4 = Date.from(localDateTime2.atZone(defaultZoneId).toInstant()); System.out.println("LocalDateTime -> Date"); System.out.println("localDateTime : " + localDateTime + " -> " + "date3 : " + date3); System.out.println("localDateTime : " + localDateTime + " -> " + "date4 : " + date4); ZonedDateTime zonedDateTime = localDateTime2.atZone(defaultZoneId); Date date5 = Date.from(zonedDateTime.toInstant()); System.out.println("ZonedDateTime -> Date"); System.out.println("zonedDateTime : " + zonedDateTime + " -> " + "date5 : " + date5); } } |
Run above main as Java application and produce the output like below
That’s it on the tutorial Convert LocalDate, LocalDateTime and ZonedDateTime to Date in Java 8.
References
JSR 310: Date and Time API
Unix time
Instant JavaDoc