Ich bin mir nicht ganz sicher, was Sie unter "aktuellen Millisekunden" verstehen, aber ich gehe davon aus, dass dies die Anzahl der Millisekunden seit der "Epoche" ist, nämlich Mitternacht, 1. Januar 1970 UTC.
Wenn Sie die Anzahl der Millisekunden seit der Epoche jetzt ermitteln möchten , verwenden Sie, System.currentTimeMillis()
wie Anubian Noob hervorgehoben hat . In diesem Fall gibt es keinen Grund, eine der neuen java.time-APIs zu verwenden.
Vielleicht haben Sie jedoch bereits ein LocalDateTime
oder ein ähnliches Objekt von irgendwoher und möchten es seit der Epoche in Millisekunden konvertieren. Dies ist nicht direkt möglich, da die LocalDateTime
Objektfamilie keine Ahnung hat, in welcher Zeitzone sie sich befinden. Daher müssen Zeitzoneninformationen bereitgestellt werden, um die Zeit relativ zur Epoche in UTC zu ermitteln.
Angenommen, Sie haben Folgendes LocalDateTime
:
LocalDateTime ldt = LocalDateTime.of(2014, 5, 29, 18, 41, 16);
Sie müssen die Zeitzoneninformationen anwenden und a ZonedDateTime
. Ich bin in der gleichen Zeitzone wie Los Angeles, also würde ich so etwas machen:
ZonedDateTime zdt = ldt.atZone(ZoneId.of("America/Los_Angeles"));
Dies macht natürlich Annahmen über die Zeitzone. Und es gibt Randfälle, die auftreten können, wenn beispielsweise die Ortszeit eine Zeit in der Nähe des Übergangs Sommerzeit (Sommerzeit) benennt. Lassen Sie uns diese beiseite legen, aber Sie sollten sich bewusst sein, dass diese Fälle existieren.
Wie auch immer, wenn Sie eine gültige erhalten können ZonedDateTime
, können Sie diese in die Anzahl der Millisekunden seit der Epoche umwandeln, wie folgt:
long millis = zdt.toInstant().toEpochMilli();
System.currentTimeMillis()
?