tl; dr
ZonedDateTime.now(
ZoneId.of( "America/Montreal" )
)
… Текущего часового пояса по умолчанию…
ZonedDateTime.now(
ZoneId.systemDefault()
)
Детали
Ответ Станислав Bshkyrtsev правильно и непосредственно отвечает на ваш вопрос.
Но есть и более серьезные проблемы, как было предложено в ответе Джона Скита .
LocalDateTime
Я не могу преобразовать эпоху в LocalDateTime
LocalDateTime
намеренно не имеет понятия о часовом поясе или смещении от UTC. Вряд ли то, что вы хотите. Это Local…
означает любую местность, а не какую-либо конкретную местность. Этот класс не представляет момент, только потенциальные моменты в диапазоне примерно 26-27 часов (диапазон часовых поясов по всему миру).
Instant
Не нужно начинать с эпохальных секунд, если вы пытаетесь узнать текущее время. Получите ток Instant
. Instant
Класс представляет собой момент на временной шкале в формате UTC с разрешением наносекунд (до девяти (9) цифр десятичной дроби).
Instant instant = Instant.now();
Внутри Instant
находится счетчик наносекунд от эпохи. Но нам все равно.
ZonedDateTime
Если вы хотите увидеть этот момент через призму настенных часов определенного региона, примените a, ZoneId
чтобы получить a ZonedDateTime
.
ZoneId z = ZoneId.of( "Europe/Paris" );
ZonedDateTime zdt = instant.atZone( z );
В качестве ярлыка вы можете сделать это непосредственно с файлом ZonedDateTime
.
ZonedDateTime zdt = ZonedDateTime.now( z );
Внутри A ZonedDateTime
есть Instant
символ. Позвоните, zdt.toInstant()
чтобы получить тот же момент времени, что и базовое значение в UTC . Одно и то же количество наносекунд с начала эпохи в любом случае, как ZonedDateTime
или какInstant
.
Заданные секунды с начала эпохи
Если вам задано количество секунд с начала эпохи, а эпоха является первым моментом 1970 года в формате UTC ( 1970-01-01T00:00:00Z
), то скормите это число в Instant
.
long secondsSinceEpoch = 1_484_063_246L ;
Instant instant = Instant.ofEpochSecond( secondsSinceEpoch ) ;
О java.time
Java.time каркас встроен в Java 8 и более поздних версий. Эти классы вытеснять неприятные старые устаревшие классы даты и времени , такие как java.util.Date
, Calendar
, и SimpleDateFormat
.
Чтобы узнать больше, см. Oracle Tutorial . И поищите в Stack Overflow множество примеров и объяснений. Спецификация - JSR 310 .
Проект Joda-Time , находящийся сейчас в режиме обслуживания , рекомендует перейти на классы java.time .
Вы можете обмениваться объектами java.time напрямую с вашей базой данных. Используйте драйвер JDBC, совместимый с JDBC 4.2 или новее. Нет необходимости в строках, нет необходимости в java.sql.*
занятиях.
Где взять классы java.time?
Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является испытательной площадкой для возможных будущих дополнений к java.time. Вы можете найти некоторые полезные классы здесь , такие как Interval
, YearWeek
, YearQuarter
, и более .
import java.time.{Instant, LocalDateTime, ZoneId, ZoneOffset}
? Этоunexpected token
для меня на Java 11.