Я использую java8 DatePicker (и мне это нравится).
Этот класс использует java.time.LocalDate
. Persistence
с другой стороны использует (исключительно в MAR 2014) java.util.Date
. LocalDate2Date
задействован, но выполним (см. Ниже), но я не могу найти способ сделать Date2LocalDate.
....
entityClassFromDatabase.setDate2b(LocalDate2Date(datepicker.getvalue()));
....
}
private java.util.Date LocalDate2Date(LocalDate localDate) {
[validation code omitted]
ChronoLocalDateTime cldt = localDate.atStartofDay();
Instant instant = cldt.toInstant(ZoneOffset.from(Instant.now().atZone(ZoneId.systemDefault())));
return Date.from.(instant);
}
Мне нужно что-то типа;
datepicker.setvalue(Date2LocalDate(entityClassFromDatabase.getDate2b());
Я видел ответы, которые предлагают новый LocalDate (дата); и варианты, но они не работают;
Последнее усилие было "преобразованием" via java.time.Instant
но хотя "мгновенный", используемый в LocalDate2Date
выдает то же самое, что и в используемом ниже LocalDate2Date
:
Instant instant = entityClassFromDatabase.getDate2b.toinstant();
LocalDateTime xx = LocalDateTime.from(instant);
исключает исключение:
java.time.DateTimeException: Unable to obtain LocalDateTime from TemporalAccessor: 2014-03-27T23:00:00Z of type java.time.Instant
я потерялся
Использование:
public LocalDate dateToLocalDate(final Date date)
{
return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault())
.toLocalDate();
}
Однако, как уже упоминалось, у этого больше нет информации о часовом поясе.
Джавадок говорит об этом методе:
Получает экземпляр LocalDateTime из Метки и идентификатора зоны.
Это создает локальную дату-время на основе указанного момента. Во-первых, смещение от UTC/Greenwich получается с использованием идентификатора зоны и моментального момента, что просто, поскольку для каждого момента есть только одно допустимое смещение. Затем время и смещение используются для вычисления локального времени.
Вы также можете передать свой часовой пояс как -
LocalDateTime localDateTime = LocalDateTime.from(new Date().toInstant().atZone(ZoneId.of("UTC")));