java8; как установить java.time.LocalDate, используя (значение) java.util.Date

1

Я использую 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

я потерялся

Теги:
java-8
datepicker
java-time

2 ответа

2

Использование:

public LocalDate dateToLocalDate(final Date date)
{
    return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault())
        .toLocalDate();
}

Однако, как уже упоминалось, у этого больше нет информации о часовом поясе.

Джавадок говорит об этом методе:

Получает экземпляр LocalDateTime из Метки и идентификатора зоны.

Это создает локальную дату-время на основе указанного момента. Во-первых, смещение от UTC/Greenwich получается с использованием идентификатора зоны и моментального момента, что просто, поскольку для каждого момента есть только одно допустимое смещение. Затем время и смещение используются для вычисления локального времени.

  • 0
    Я думаю, что OP хочет обратное преобразование, или я что-то не так понял?
  • 0
    Что ж, OP говорит: «LocalDate2Date задействован, но выполним (см. Ниже), но я не могу найти способ сделать Date2LocalDate».
Показать ещё 1 комментарий
0

Вы также можете передать свой часовой пояс как -

LocalDateTime localDateTime = LocalDateTime.from(new Date().toInstant().atZone(ZoneId.of("UTC")));

Ещё вопросы

Сообщество Overcoder
Наверх
Меню