Ich bin mir nicht ganz sicher, was du mit "aktuellen Millisekunden" meinst, aber ich nehme an, es handelt sich um die Anzahl der Millisekunden seit der "Epoch", nämlich Mitternacht, 1. Januar 1970 UTC.
Wenn du die Anzahl der Millisekunden seit der "Epoch" jetzt gerade finden möchtest, dann verwende System.currentTimeMillis()
, wie Anubian Noob darauf hingewiesen hat. Falls ja, gibt es keinen Grund, eine der neuen java.time APIs dafür zu verwenden.
Vielleicht hast du jedoch bereits ein LocalDateTime
oder ein ähnliches Objekt von irgendwo und möchtest es in Millisekunden seit der "Epoch" umwandeln. Das ist nicht direkt möglich, da die LocalDateTime
-Objekte keine Vorstellung davon haben, in welcher Zeitzone sie sich befinden. Daher muss Zeitzone-Information angegeben werden, um die Zeit relativ zur "Epoch" zu finden, die in UTC ist.
Angenommen, du hast ein LocalDateTime
wie folgt:
LocalDateTime ldt = LocalDateTime.of(2014, 5, 29, 18, 41, 16);
Du musst die Zeitzone-Information anwenden, um ein ZonedDateTime
zu erhalten. Ich befinde mich in der gleichen Zeitzone wie Los Angeles, also würde ich etwas Ähnliches tun:
ZonedDateTime zdt = ldt.atZone(ZoneId.of("America/Los_Angeles"));
Natürlich basiert dies auf Annahmen über die Zeitzone. Und es gibt Randfälle, die auftreten können, zum Beispiel, wenn die lokale Zeit zufällig eine Zeit nahe dem Übergang zur Sommerzeit benennt. Lassen wir diese Fälle außer Acht, aber du solltest dir bewusst sein, dass sie existieren.
Wie auch immer, wenn du ein gültiges ZonedDateTime
erhalten kannst, kannst du dies in die Anzahl der Millisekunden seit der "Epoch" umwandeln, wie folgt:
long millis = zdt.toInstant().toEpochMilli();