Программисты, работающие с Java 8 и новее, могут столкнуться с проблемой конвертации между двумя ключевыми классами для работы с датой и временем: LocalDateTime
из нового API для работы с датой и временем и Date
из старого (legacy) API.
LocalDateTime
— это класс, представляющий дату-время без часового пояса, который вводится в Java 8 в новом API для работы с датой и временем. Этот класс заменяет старый класс java.util.Date
, который использовался для хранения даты и времени в предыдущих версиях Java.
Пример кода, использующего java.util.Date
:
Date date = new Date(); System.out.println(date.toString());
Пример кода, использующего java.time.LocalDateTime
:
LocalDateTime ldt = LocalDateTime.now(); System.out.println(ldt.toString());
Однако, во многих случаях, старый код все еще использует java.util.Date
, и при интеграции старого и нового кода может возникнуть необходимость конвертировать java.util.Date
в java.time.LocalDateTime
и наоборот.
К сожалению, в этих классах нет прямых методов для конвертации между ними, но это можно сделать с помощью некоторых промежуточных шагов.
Конвертация java.util.Date
в java.time.LocalDateTime
:
// создание объекта java.util.Date Date date = new Date(); // конвертация в LocalDateTime LocalDateTime ldt = date.toInstant() .atZone(ZoneId.systemDefault()) .toLocalDateTime();
Конвертация java.time.LocalDateTime
в java.util.Date
:
// создание объекта java.time.LocalDateTime LocalDateTime ldt = LocalDateTime.now(); // конвертация в java.util.Date Date date = java.sql.Timestamp.valueOf(ldt);
В обоих случаях используется преобразование к промежуточному типу (Instant
или Timestamp
), который затем конвертируется в нужный тип.
Это простые и эффективные способы конвертации между java.util.Date
и java.time.LocalDateTime
, необходимые при работе с различными версиями кода Java.
Добавить комментарий