tl; д-р
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 . Стільки ж наносекунд з епохи в будь-який спосіб, як a, ZonedDateTime
так і aInstant
.
Дано секунди з епохи
Якщо вам дається кількість секунд з часу епохи, і епоха - це перший момент 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 . І шукайте в 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.