Вы спрашиваете о невозможном. LocalDateTime
само по себе не определяет момент времени. Date
, с другой стороны, - это точка во времени (несмотря на имя класса). Так как же возможно преобразование? Какое преобразование вы хотите?
Чтобы добавить небольшую глубину, LocalDateTime
- это дата и время дня без часового пояса. Local
в некоторых именах классов в java .time означает «без смещения или часового пояса». Чтобы интерпретировать LocalDateTime
в определенный момент времени, сначала необходимо выполнить интерпретацию в некотором часовом поясе, оставляя место для промежутка времени около 26 часов.
A Date
не может представлять 2020-01-01T09:00
независимо от времени зона. Никогда. Он может представлять момент времени, который в некотором часовом поясе будет отображаться как 2020-01-01T09:00
.
Вы правы, что часовой пояс влияет на результат, который вы получаете. Именно поэтому он нам нужен для преобразования.
Вы сказали в комментарии, что он нужен для параметра связывания JPA. Интересно, если это необходимо. Чтобы передать дату и время, не зависящие от часового пояса, в ваш запрос JPA, передайте LocalDateTime
. Современная реализация JPA должна принять это.
Если невозможно передать современный класс в JPA, преобразование с использованием часового пояса по умолчанию вашей JVM (ZoneId.systemDefault()
), вероятно, даст вам то, что вы хотите. В этом часовом поясе принято интерпретировать Date
.