В общем, нет, ваш подход не верен.Причина в том, что LocalDateTime
не имеет ассоциированного часового пояса, поэтому он неоднозначен по своей природе.Чтобы преобразовать его в фактическую временную метку (абсолютный момент времени, независимый от часовых поясов), вам необходимо знать, в каком часовом поясе он был измерен.
Позвонив по номеру localDateTime.toInstant(ZoneOffset.UTC)
, вы предполагаете, что ваш localDateTime
был фактически измерен в часовом поясе UTC. Вместо этого вы должны использовать часовой пояс, в котором хранится LocalDateTime
. Если вы не знаете, тогда ваши входные данные по своей сути неоднозначны, и вам нужно сначала исправить это.
Обратите внимание, что это не имеет ничего общего с тем фактом, что эпоха Unix обычно указывается в UTC.Мы могли бы также сказать, что эпоха Unix - 1970-01-01T08:00:00+08:00
, и это будет тот же самый момент во времени.
Остальное мне кажется правильным.