tl; dr
ZonedDateTime.now(
ZoneId.of( "America/Montreal" )
)
… Bieżącej domyślnej strefy czasowej…
ZonedDateTime.now(
ZoneId.systemDefault()
)
Detale
Odpowiedz przez Stanislav Bshkyrtsev prawidłowo i bezpośrednio odpowiada na Twoje pytanie.
Istnieją jednak większe problemy, jak sugeruje odpowiedź Jona Skeeta .
LocalDateTime
Nie znajduję sposobu, aby przekonwertować epokę sekundę na LocalDateTime
LocalDateTime
celowo nie ma pojęcia strefy czasowej ani przesunięcia względem czasu UTC. Mało prawdopodobne, czego chcesz. Local…
Oznacza dowolną lokalizację, a nie któregokolwiek konkretnym obszarze. Ta klasa nie przedstawia momentu, a jedynie potencjalne momenty w zakresie około 26-27 godzin (zakres stref czasowych na całym świecie).
Instant
Nie musisz zaczynać od sekund epoki, jeśli próbujesz uzyskać aktualny czas. Pobierz aktualny Instant
. Instant
Klasa reprezentuje moment na osi czasu w UTC z rozdzielczością nanosekund (do dziewięciu (9) cyfr ułamka dziesiętnego).
Instant instant = Instant.now();
Wewnątrz tego Instant
jest liczba nanosekund -od-epoki. Ale tak naprawdę nas to nie obchodzi.
ZonedDateTime
Jeśli chcesz zobaczyć ten moment przez pryzmat zegara ściennego określonego regionu, zastosuj a, ZoneId
aby uzyskać ZonedDateTime
.
ZoneId z = ZoneId.of( "Europe/Paris" );
ZonedDateTime zdt = instant.atZone( z );
Jako skrót możesz zrobić bezpośrednio do ZonedDateTime
.
ZonedDateTime zdt = ZonedDateTime.now( z );
A ZonedDateTime
ma Instant
w sobie. Zadzwoń, zdt.toInstant()
aby uzyskać ten sam moment jako podstawową wartość w UTC . Taka sama liczba nanosekund od epoki w obu przypadkach, jako a ZonedDateTime
lub jako Instant
.
Podane sekundy od epoki
Jeśli podana jest liczba sekund od epoki, a epoka jest pierwszą chwilą roku 1970 w UTC ( 1970-01-01T00:00:00Z
), podaj tę liczbę do Instant
.
long secondsSinceEpoch = 1_484_063_246L ;
Instant instant = Instant.ofEpochSecond( secondsSinceEpoch ) ;
Informacje o java.time
Struktura java.time jest wbudowana w Javę 8 i nowsze. Klasy te kłopotliwe zastąpić stary starszych klas Date-Time, takich jak java.util.Date
, Calendar
, i SimpleDateFormat
.
Aby dowiedzieć się więcej, zobacz samouczek Oracle . I przeszukaj Stack Overflow, aby znaleźć wiele przykładów i wyjaśnień. Specyfikacja to JSR 310 .
Projekt Joda-Time , obecnie w trybie konserwacji , zaleca migrację do klas java.time .
Możesz wymieniać obiekty java.time bezpośrednio ze swoją bazą danych. Użyj sterownika JDBC zgodnego z JDBC 4.2 lub nowszym. Nie ma potrzeby stosowania ciągów ani java.sql.*
klas.
Skąd wziąć klasy java.time?
Projekt ThreeTen-Extra rozszerza java.time o dodatkowe klasy. Ten projekt jest poligonem doświadczalnym dla ewentualnych przyszłych dodatków do java.time. Można znaleźć kilka przydatnych klas tutaj takie jak Interval
, YearWeek
, YearQuarter
, i więcej .
import java.time.{Instant, LocalDateTime, ZoneId, ZoneOffset}
działał? Tounexpected token
dla mnie w Javie 11.