LocalDate для java.util.Date и наоборот самое простое преобразование? [Дубликат]

    

На этот вопрос уже есть ответ здесь:

    

Есть ли простой способ преобразовать LocalDate (представленный в Java 8) в java.util.Date объект?

Под «простым» я имею в виду проще, чем это:

Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());

что мне немного неловко

Поскольку нас интересует только часть даты, а информация о часовом поясе отсутствует ни в одном из объектов, зачем вводить часовые пояса в явном виде? Полуночное время и часовой пояс системы по умолчанию должны приниматься неявно для преобразования.

96 голосов | спросил George 11 +03002015-10-11T18:48:02+03:00312015bEurope/MoscowSun, 11 Oct 2015 18:48:02 +0300 2015, 18:48:02

4 ответа


0

На самом деле есть. Существует статический метод valueOf в объекте java.sql.Date, который делает именно это. Итак, у нас есть

java.util.Date date = java.sql.Date.valueOf(localDate);

и все. Нет явной настройки часовых поясов, потому что местный часовой пояс взят неявно.

Из документов:

  

Предоставленная LocalDate интерпретируется как локальная дата в локальном   часовой пояс.

Подклассы java.sql.Date java.util.Date результат также java.util.Date.

А для обратной операции есть метод toLocalDate в классе java.sql.Date. Итак, мы имеем:

LocalDate ld = new java.sql.Date(date.getTime()).toLocalDate();

ответил George 11 +03002015-10-11T18:51:00+03:00312015bEurope/MoscowSun, 11 Oct 2015 18:51:00 +0300 2015, 18:51:00
0

Дата -> LocalDate:

LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();

LocalDate -> Дата:

Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
ответил Hai Nguyen 1 AM00000050000004331 2017, 05:52:43
0

Дата до LocalDate

Date date = new Date();
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();

LocalDate to Date

LocalDate localDate = LocalDate.now();
Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
ответил fjkjava 8 FriEurope/Moscow2017-12-08T20:39:21+03:00Europe/Moscow12bEurope/MoscowFri, 08 Dec 2017 20:39:21 +0300 2017, 20:39:21
0

Вы можете преобразовать объект java.util.Date в String объект, который будет форматировать дату как гггг-мм-дд.

LocalDate имеет метод parse, который преобразует его в LocalDate объект. Строка должна представлять действительную дату и анализируется с использованием DateTimeFormatter.ISO_LOCAL_DATE.

Дата до LocalDate

LocalDate.parse(Date.toString())
ответил msvetterracer93 19 +03002016-10-19T23:02:55+03:00312016bEurope/MoscowWed, 19 Oct 2016 23:02:55 +0300 2016, 23:02:55

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132