tl; dr
ZonedDateTime.now(
ZoneId.of( "America/Montreal" )
)
… Mevcut varsayılan saat diliminden…
ZonedDateTime.now(
ZoneId.systemDefault()
)
Detaylar
Stanislav Bshkyrtsev tarafından cevap doğru ve doğrudan Soru cevaplar.
Ancak, Jon Skeet'in Yanıtında önerildiği gibi, daha büyük sorunlar var .
LocalDateTime
Epoch second'ı LocalDateTime'a dönüştürmenin bir yolunu bulamıyorum
LocalDateTime
kasıtlı olarak saat dilimi veya UTC'den sapma kavramı yoktur. Muhtemelen istediğin şey değil. Bu Local…
, herhangi bir yerellik anlamına gelir , belirli bir yer değil. Bu sınıf bir anı değil , yalnızca yaklaşık 26-27 saatlik bir aralıktaki potansiyel anları temsil eder (dünyadaki zaman dilimleri aralığı).
Instant
Geçerli saati almaya çalışıyorsanız, epoch saniye ile başlamanıza gerek yoktur. Akımı alın Instant
. Instant
Sınıfı zaman çizelgesinde bir anı temsil UTC çözünürlüğe sahip nanosaniye (ondalık kesir dokuz (9) haneye kadar).
Instant instant = Instant.now();
Bunun içinde, çağdan Instant
itibaren nanosaniye sayısı var . Ama gerçekten umursamıyoruz.
ZonedDateTime
Belirli bir bölgenin duvar saatlik süre merceğinden o anı görmek istiyorsan, bir geçerli ZoneId
bir olsun ZonedDateTime
.
ZoneId z = ZoneId.of( "Europe/Paris" );
ZonedDateTime zdt = instant.atZone( z );
Bir kısayol olarak, doğrudan ZonedDateTime
.
ZonedDateTime zdt = ZonedDateTime.now( z );
A'nın ZonedDateTime
içinde bir Instant
vardır. UTC'dezdt.toInstant()
temel bir değer olarak aynı anda aynı anı almak için arayın . Dönemden beri aynı sayıda nanosaniye, her şekilde, bir .ZonedDateTime
Instant
Dönemden bu yana geçen saniye sayısı
Size çağdan beri bir saniye sayısı verilmişse ve dönem, UTC ( 1970-01-01T00:00:00Z
) ' de 1970'in ilk anıysa, o sayıyı Instant
.
long secondsSinceEpoch = 1_484_063_246L ;
Instant instant = Instant.ofEpochSecond( secondsSinceEpoch ) ;
Hakkında java.time
Java.time çerçevesi daha sonra Java 8 ve yerleşiktir. Bu sınıflar zahmetli eski yerini mirası gibi tarih-saat sınıfları java.util.Date
, Calendar
& SimpleDateFormat
.
Daha fazla bilgi edinmek için Oracle Eğitimine bakın . Ve birçok örnek ve açıklama için Stack Overflow'da arama yapın. Spesifikasyon JSR 310'dur .
Şu anda bakım modunda olan Joda-Time projesi, java.time sınıflarına geçişi tavsiye ediyor .
Sen değiştirebilir java.time sizin veritabanı ile doğrudan nesneleri. JDBC 4.2 veya üstü ile uyumlu bir JDBC sürücüsü kullanın . Dizelere gerek yok, derslere gerek yok .java.sql.*
Java.time derslerini nereden edinebilirim?
ThreeTen-Ekstra proje ek sınıfları ile java.time uzanır. Bu proje, java.time uygulamasına gelecekteki olası eklemeler için kanıtlayıcı bir zemindir. Burada bazı yararlı sınıfları gibi bulabilir Interval
, YearWeek
, YearQuarter
, ve daha .
import java.time.{Instant, LocalDateTime, ZoneId, ZoneOffset}
çalışması için hangi dili / lehçeyi kullanıyorsunuz ? Bu bir varunexpected token
Java 11. benim için