Java 8'in yeni DateTime API'si ile çalışıyorum.
LocalDate'i Anında Nasıl Çevirebilirim? Bir istisna yaşıyorum
LocalDate date = LocalDate.of(2012, 2, 2);
Instant instant = Instant.from(date);
ve nedenini anlamıyorum.
Java 8'in yeni DateTime API'si ile çalışıyorum.
LocalDate'i Anında Nasıl Çevirebilirim? Bir istisna yaşıyorum
LocalDate date = LocalDate.of(2012, 2, 2);
Instant instant = Instant.from(date);
ve nedenini anlamıyorum.
Yanıtlar:
Instant
Sınıf zaman on-line bir anlık bir noktayı temsil eder. A'ya ve a'dan dönüştürme LocalDate
bir saat dilimi gerektirir. Diğer bazı tarih ve saat kitaplıklarının aksine, JSR-310 saat dilimini sizin için otomatik olarak seçmez, bu nedenle bunu sağlamanız gerekir.
LocalDate date = LocalDate.now();
Instant instant = date.atStartOfDay(ZoneId.systemDefault()).toInstant();
Bu örnek ZoneId.systemDefault()
, dönüştürmeyi gerçekleştirmek için JVM'nin varsayılan saat dilimini - - kullanır. İlgili soruya daha uzun bir yanıt için buraya bakın .
Güncelleme: Kabul edilen cevap, LocalDateTime::toInstant(ZoneOffset)
yalnızca kabul eden kullanır ZoneOffset
. Bu cevap, LocalDate::atStartOfDay(ZoneId)
hangisinin kabul ettiğini kullanırZoneId
. Bu nedenle, bu cevap genellikle daha kullanışlıdır (ve muhtemelen kabul edilen cevap olmalıdır).
PS. API'nin ana yazarıydım
Anı bir ana dönüştürmek için bir LocalDateTime örneğine sahip olmanız gerekir, örneğin:
LocalDate.now().atStartOfDay().toInstant(ZoneOffset.UTC)
LocalDate
bir zamanı içermez.