Wie bekomme ich Millisekunden von LocalDateTime in Java 8
Frage ich mich, ob es gibt einen Weg, um aktuelle Millisekunden seit 1-1-1970 (Epoche) mit dem neuen LocalDate
, LocalTime
oder LocalDateTime
Klassen von Java 8.
Der bekannten Weise unter:
long currentMilliseconds = new Date().getTime();
oder
long currentMilliseconds = System.currentTimeMillis();
Kommentar zu dem Problem
Was ist falsch mit
System.currentTimeMillis()
? @DavidWallace Er bemüht sich um die Zeit von einem Datum, nicht die aktuelle Zeit?
"... einen Weg, um aktuelle Millisekunden ..."
Millisekunden zählen von 1-1-1970. Ich war Wandern, wenn es eine Methode gibt, um Sie mit den neuen Klassen von Java 8 LocalDate, LocalTime und LocalDateTime, Ursache habe ich nicht gefunden.
Mein Verständnis von dem Zweck, für diese Klassen ist, dass es eine "Mensch-zentrierte" Verständnis von Zeit, und
currentTimeMillis
wäre irrelevant in diesem Zusammenhang. Denke, Kalender + Wand-Uhr-mit wirklich guter Präzision, und keine sorgen über Zeitzonen und Lokalität. Es gibt also keinen Weg zurück zu "UTC-Zeit" von einem LocalTime InformationsquelleAutor der Frage George Siggouroglou | 2014-05-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin mir nicht ganz sicher was du meinst mit "aktuellen Millisekunden" aber ich nehme an, es ist die Anzahl der Millisekunden seit Beginn der "Epoche", nämlich Mitternacht, 1. Januar 1970 UTC.
Wenn Sie möchten, finden Sie die Anzahl der Millisekunden seit Beginn der Epoche jetzt dann verwenden
System.currentTimeMillis()
als Anubian Noob hat darauf hingewiesen,. Wenn dem so ist, gibt es keinen Grund, die Verwendung der neuen java.Zeit-APIs.Jedoch, vielleicht haben Sie bereits eine
LocalDateTime
oder ähnliches Objekt, von irgendwo, und Sie möchten, konvertieren Sie es in Millisekunden seit Beginn der Epoche zurück. Es ist nicht möglich, das zu tun, direkt, da dieLocalDateTime
Familie von Objekten hat keine Ahnung von welcher Zeitzone Sie sich befinden. Damit werden Zeit-zone Informationen versorgt werden muss, um die Zeit zu finden, die relativ zu der Epoche, die in UTC.Angenommen, Sie haben eine
LocalDateTime
wie diese:Müssen Sie die Zeitzonen-Informationen, was eine
ZonedDateTime
. Ich bin in der gleichen Zeitzone wie Los Angeles, also würde ich etwas wie das hier tun:Natürlich, das macht Annahmen über die Zeitzone. Und es gibt Sonderfälle, die auftreten können, zum Beispiel, wenn die lokale Zeit geschieht zur Zeit in der Nähe der Daylight Saving Time (Summer Time) übergang. Wir legen diese beiseite, aber Sie sollten sich bewusst sein, dass diese Fälle existieren.
Sowieso, wenn man eine gültige
ZonedDateTime
können Sie wandeln diese um die Anzahl der Millisekunden seit Beginn der Epoche, etwa so:InformationsquelleAutor der Antwort Stuart Marks
Was ich tun, damit ich nicht eine Zeitzone angeben ist,
gibt
Nur für den Fall, Sie nicht wie-System.aktuelle...., verwenden
Instant.now().toEpochMilli()
InformationsquelleAutor der Antwort brian
Zur Vermeidung amp; zoneid, die Sie tun können:
Immer 0 als Wert, das ist richtig!
InformationsquelleAutor der Antwort Dani
Bekommen, die aktuelle Zeit in Millisekunden (seit Beginn der Epoche), verwenden Sie
System.currentTimeMillis()
.InformationsquelleAutor der Antwort Anubian Noob
Seit Java 8 können Sie
die Ihnen die gleichen Ergebnisse wie
InformationsquelleAutor der Antwort Marteng