425 Stimmen

Wie man Millisekunden von LocalDateTime in Java 8 erhält

Ich frage mich, ob es eine Möglichkeit gibt, die aktuellen Millisekunden seit dem 1.1.1970 (Epoch) mithilfe der neuen LocalDate, LocalTime oder LocalDateTime-Klassen von Java 8 zu erhalten.

Der bekannte Weg ist unten:

long currentMilliseconds = new Date().getTime();

oder

long currentMilliseconds = System.currentTimeMillis();

13voto

Anubian Noob Punkte 13158

Um die aktuelle Zeit in Millisekunden (seit der Epoche) zu erhalten, verwenden Sie System.currentTimeMillis().

13voto

Md. Kamruzzaman Punkte 1857

Sie können dies versuchen:

long diff = LocalDateTime.now().atZone(ZoneOffset.UTC).toInstant().toEpochMilli();

7voto

maxxyme Punkte 1908

Warum hat niemand die Methode LocalDateTime.toEpochSecond() erwähnt:

LocalDateTime localDateTime = ... // was auch immer z. B. LocalDateTime.now()
long time2epoch = localDateTime.toEpochSecond(ZoneOffset.UTC);

Dies scheint viel kürzer zu sein als viele der oben vorgeschlagenen Antworten...

6voto

BenjyTec Punkte 2110

Im Falle von LocalDate können Sie die toEpochDay() Methode verwenden. Sie gibt die Anzahl der Tage seit 01/01/1970 zurück. Diese Zahl kann dann leicht in Millisekunden umgerechnet werden:

long dateInMillis = TimeUnit.DAYS.toMillis(myLocalDate.toEpochDay());

Im Falle von LocalDateTime können Sie die toEpochSecond() Methode verwenden. Sie gibt die Anzahl der Sekunden seit 01/01/1970 zurück. Auch diese Zahl kann in Millisekunden umgerechnet werden:

long dateTimeInMillis = TimeUnit.SECONDS.toMillis(myLocalDateTime.toEpochSecond());

5voto

Marina DU Punkte 61

Für LocalDateTime mache ich es auf diese Weise:

LocalDateTime.of(2021,3,18,7,17,24,341000000)
    .toInstant(OffsetDateTime.now().getOffset())
    .toEpochMilli()

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X