"Şu anki milisaniye" ile ne demek istediğinizi tam olarak bilmiyorum ama "çağ" dan bu yana geçen milisaniye sayısı, yani gece yarısı, 1 Ocak 1970 UTC.
Şu andan bu yana geçen milisaniye sayısını bulmak istiyorsanız , Anubian Noob'un işaret ettiğiSystem.currentTimeMillis()
gibi kullanın . Öyleyse, bunu yapmak için yeni java.time API'lerinden herhangi birini kullanmanız için hiçbir neden yoktur.
Ancak, belki zaten bir LocalDateTime
yerden bir veya benzer bir nesneniz var ve onu çağdan beri milisaniyeye dönüştürmek istiyorsunuz. Bunu yapmak doğrudan mümkün değildir, çünkü LocalDateTime
nesne ailesinin içinde bulundukları saat dilimi hakkında bir fikri yoktur. Bu nedenle UTC'de olan döneme göre zamanı bulmak için zaman dilimi bilgilerinin sağlanması gerekir.
Diyelim ki böyle bir şeye sahipsiniz LocalDateTime
:
LocalDateTime ldt = LocalDateTime.of(2014, 5, 29, 18, 41, 16);
Saat dilimi bilgilerini uygulamanız gerekir ZonedDateTime
. Los Angeles ile aynı saat dilimindeyim, bu yüzden böyle bir şey yapardım:
ZonedDateTime zdt = ldt.atZone(ZoneId.of("America/Los_Angeles"));
Tabii ki, bu zaman dilimi hakkında varsayımlar yapar. Örneğin, yerel saatin Yaz Saati uygulamasına yakın bir saati adlandırması durumunda oluşabilecek uç durumlar vardır. Bunları bir kenara bırakalım, ancak bu vakaların var olduğunun farkında olmalısınız.
Her neyse, geçerli bir tane ZonedDateTime
alabiliyorsanız, bu dönemi çağdan bu yana geçen milisaniye sayısına dönüştürebilirsiniz, şöyle:
long millis = zdt.toInstant().toEpochMilli();
System.currentTimeMillis()
?