Вот что я придумал (и, как и все головоломки «Время по времени», вероятно, это будет опровергнуто на основе какой-то странной корректировки дневного времени-прыжка: D)
Date
& lt; - >> LocalDateTime
Учитывая: Date date = [some date]
(1) LocalDateTime
& lt; Instant
& л; & л; Date
Instant instant = Instant.ofEpochMilli(date.getTime());
LocalDateTime ldt = LocalDateTime.ofInstant(instant, ZoneOffset.UTC);
(2) Date
& lt; Instant
& lt; LocalDateTime
Instant instant = ldt.toInstant(ZoneOffset.UTC);
Date date = Date.from(instant);
Пример:
Date date = new Date();
System.out.println(date + " long: " + date.getTime());
LocalDateTime
& lt; Instant
& л; & л; Date
: Создайте Instant
из Date
:
Instant instant = Instant.ofEpochMilli(date.getTime());
System.out.println("Instant from Date:\n" + instant);
Создайте Date
с Instant
(необязательно, но для иллюстрации):
date = Date.from(instant);
System.out.println("Date from Instant:\n" + date + " long: " + date.getTime());
Создать LocalDateTime
из Instant
LocalDateTime ldt = LocalDateTime.ofInstant(instant, ZoneOffset.UTC);
System.out.println("LocalDateTime from Instant:\n" + ldt);
Date
& lt; Instant
& lt; LocalDateTime
Создайте Instant
из LocalDateTime
:
instant = ldt.toInstant(ZoneOffset.UTC);
System.out.println("Instant from LocalDateTime:\n" + instant);
Создайте Date
из Instant
:
date = Date.from(instant);
System.out.println("Date from Instant:\n" + date + " long: " + date.getTime());
Fri Nov 01 07:13:04 PDT 2013 long: 1383315184574
Instant from Date:
2013-11-01T14:13:04.574Z
Date from Instant:
Fri Nov 01 07:13:04 PDT 2013 long: 1383315184574
LocalDateTime from Instant:
2013-11-01T14:13:04.574
Instant from LocalDateTime:
2013-11-01T14:13:04.574Z
Date from Instant:
Fri Nov 01 07:13:04 PDT 2013 long: 1383315184574