Yanıtlar:
Yapabilirsin:
timeStamp.toLocalDateTime().toLocalDate();
Dönüştürmeyi yapmak için saat dilimini
timestamp.toLocalDateTime()
kullanacağınıClock.systemDefaultZone()
unutmayın . İstediğiniz bu olabilir veya olmayabilir.
timestamp.toLocalDateTime()
yöntem, dönüşümü yapmak için systemDefault saat dilimini kullanacaktır. İstediğiniz bu olabilir veya olmayabilir.
LocalDateTime
her zaman sistem varsayılan saat dilimini kullanır. Adında "Yerel" budur.
Kabul edilen cevap ideal değil, bu yüzden 2 sentimi eklemeye karar verdim
timeStamp.toLocalDateTime().toLocalDate();
genel olarak kötü bir çözüm bu yöntemi JDK'ya neden eklediklerinden emin değilim, çünkü sistem saat dilimini kullanarak örtük bir dönüştürme yaparak işleri gerçekten kafa karıştırıcı hale getiriyor. Genellikle sadece java8 tarih sınıflarını kullanırken, programcı iyi bir şey olan bir saat dilimi belirtmek zorunda kalır.
İyi çözüm şudur:
timestamp.toInstant().atZone(zoneId).toLocalDate()
Nerede BölgeKimliği genellikle hangi kullanmak istediğiniz zaman dilimi ya ZoneId.systemDefault () Eğer sistem dilimini veya bazı kodlanmış dilimini gibi kullanmak istiyorsanız ZoneOffset.UTC
Genel yaklaşım olmalıdır
Saat dilimini hesaba katmak için @assylias yanıtını biraz genişleteceğim. Belirli bir saat dilimi için LocalDateTime almanın en az iki yolu vardır.
Tüm uygulama için setDefault saat dilimini kullanabilirsiniz. Herhangi bir zaman damgası -> java.time dönüşümünden önce çağrılmalıdır:
public static void main(String... args) {
TimeZone utcTimeZone = TimeZone.getTimeZone("UTC");
TimeZone.setDefault(utcTimeZone);
...
timestamp.toLocalDateTime().toLocalDate();
}
Veya toInstant.atZone zincirini kullanabilirsiniz:
timestamp.toInstant()
.atZone(ZoneId.of("UTC"))
.toLocalDate();