2017-12-18 14 views
2

In Instant gibt es Methoden:Convert Augenblick Mikrosekunden von der Zeit Epoch

  • toEpochMilli die wandelt diesen Augenblick auf die Anzahl der Millisekunden von der Epoche des 1970-01-01T00: 00: 00Z
  • getEpochSecond Die erhält die Anzahl der Sekunden aus der Java-Epoche von 1970-01-01T00: 00: 00Z.

Beide dieser Verfahren verlieren Genauigkeit, z.B. in toEpochMilli JavaDoc ich sehe:

Wenn in diesem Augenblick mehr als Millisekunden Genauigkeit hat, dann die Umwandlung überschüssige Präzision Informationen fallen, als ob die Menge in Nanosekunden unterliegt Division auf Integer um eine Million.

Ich sehe keine entsprechenden Methoden, um genauere Zeitstempel zu erhalten. Wie kann ich die Anzahl der Mikros oder Nanos aus der Epoche in Java 8 erhalten?

Antwort

7

Verwenden Sie getNano zusammen mit getEpochSeconds.

getNano 

Ruft die Anzahl der Nanosekunden später entlang der Zeitlinie, vom Beginn des zweiten. Der Wert für die Nanosekundensekunde misst die Gesamtzahl der Nanosekunden ab der Sekunde, die von getEpochSecond zurückgegeben wird.

+2

Gute Antwort. Zusätzlich zu 'getNano()' empfehle ich, 'TimeUnit' für die betroffenen Konvertierungen zu verwenden und Sie entscheiden, ob Sie eine Überlauferkennung benötigen. Auf der einen Seite passen die Mikrosekunden von 'Instant.MIN' und' Instant.MAX' nicht in eine 'long', auf der anderen Seite reicht'lang' für 'Instant's ziemlich weit in der Vergangenheit oder der Zukunft. –