Nie jestem do końca pewien, co rozumiesz przez „bieżące milisekundy”, ale założę, że jest to liczba milisekund od „epoki”, a mianowicie północy, 1 stycznia 1970 roku UTC.
Jeśli chcesz znaleźć liczbę milisekund od epoki teraz, a następnie użyć System.currentTimeMillis()
jako Anubian Noob podkreślił . Jeśli tak, nie ma powodu, aby używać do tego nowych interfejsów API java.time.
Być może jednak masz już LocalDateTime
gdzieś podobny obiekt i chcesz go przekształcić w milisekundy od epoki. Nie można tego zrobić bezpośrednio, ponieważ LocalDateTime
rodzina obiektów nie ma pojęcia, w której strefie czasowej się znajdują. W związku z tym należy podać informacje o strefie czasowej, aby znaleźć czas w stosunku do epoki, która jest w UTC.
Załóżmy, że masz coś LocalDateTime
takiego:
LocalDateTime ldt = LocalDateTime.of(2014, 5, 29, 18, 41, 16);
Musisz zastosować informacje o strefie czasowej, podając ZonedDateTime
. Jestem w tej samej strefie czasowej co Los Angeles, więc zrobiłbym coś takiego:
ZonedDateTime zdt = ldt.atZone(ZoneId.of("America/Los_Angeles"));
Oczywiście przyjmuje to założenia dotyczące strefy czasowej. Są też przypadki skrajne, które mogą wystąpić, na przykład, jeśli lokalny czas nazywa czas w pobliżu przejścia na czas letni (czas letni). Odłóżmy je na bok, ale należy pamiętać, że takie przypadki istnieją.
W każdym razie, jeśli możesz uzyskać poprawny ZonedDateTime
, możesz przekonwertować to na liczbę milisekund od epoki, tak jak poniżej:
long millis = zdt.toInstant().toEpochMilli();
System.currentTimeMillis()
?