tl; dr
Sie fragen nach dem Bruchteil einer Sekunde der aktuellen Zeit als Anzahl von Millisekunden ( nicht ab Epoche gezählt).
Instant.now() // Get current moment in UTC, then…
.get( ChronoField.MILLI_OF_SECOND ) // interrogate a `TemporalField`.
2017-04-25T03: 01: 14.113Z → 113
- Erhalten Sie den Bruchteil einer Sekunde in Nanosekunden (Milliarden).
- Teilen Sie durch Tausend, um auf Millisekunden (Tausend) zu kürzen.
Sehen Sie diesen Code live auf IdeOne.com .
Mit java.time
Der moderne Weg ist mit den java.time Klassen.
Erfassen Sie den aktuellen Moment in UTC.
Instant.now()
Verwenden Sie die Instant.get
Methode, um den Wert von a abzufragen TemporalField
. In unserem Fall ist das, was TemporalField
wir wollen ChronoField.MILLI_OF_SECOND
.
int millis = Instant.now().get( ChronoField.MILLI_OF_SECOND ) ; // Get current moment in UTC, then interrogate a `TemporalField`.
Oder rechnen Sie selbst.
Wahrscheinlicher ist, dass Sie dies nach einer bestimmten Zeitzone fragen. Der Bruchteil einer Sekunde ist wahrscheinlich der gleiche wie bei, Instant
aber es gibt so viele Anomalien mit Zeitzonen, dass ich zögere, diese Annahme zu treffen.
ZonedDateTime zdt = ZonedDateTime.now( ZoneId.of( "America/Montreal" ) ) ;
Fragen Sie für den Bruchteil einer Sekunde ab. Die Frage wurde nach Millisekunden gestellt , aber Java.time-Klassen verwenden eine feinere Auflösung von Nanosekunden . Das bedeutet, dass die Anzahl der Nanosekunden zwischen 0 und 999.999.999 liegt.
long nanosFractionOfSecond = zdt.getNano();
Wenn Sie wirklich Millisekunden wollen, schneiden Sie die feineren Daten durch Teilen durch eine Million ab. Eine halbe Sekunde beträgt beispielsweise 500.000.000 Nanosekunden und 500 Millisekunden.
long millis = ( nanosFractionOfSecond / 1_000_000L ) ; // Truncate nanoseconds to milliseconds, by a factor of one million.
Über java.time
Das java.time- Framework ist in Java 8 und höher integriert. Diese Klassen verdrängen die lästigen alten Legacy - Datum-Zeit - Klassen wie java.util.Date
, Calendar
, & SimpleDateFormat
.
Das Joda-Time- Projekt, das sich jetzt im Wartungsmodus befindet , empfiehlt die Migration zu den Klassen java.time .
Weitere Informationen finden Sie im Oracle-Lernprogramm . Suchen Sie im Stapelüberlauf nach vielen Beispielen und Erklärungen. Die Spezifikation ist JSR 310 .
Woher bekomme ich die java.time-Klassen?
- Java SE 8 und SE 9 und höher
- Eingebaut.
- Teil der Standard-Java-API mit einer gebündelten Implementierung.
- Java 9 fügt einige kleinere Funktionen und Korrekturen hinzu.
- Java SE 6 und SE 7
- Android
Das ThreeTen-Extra- Projekt erweitert java.time um zusätzliche Klassen. Dieses Projekt ist ein Testfeld für mögliche zukünftige Ergänzungen von java.time. Sie können einige nützliche Klassen hier wie finden Interval
, YearWeek
, YearQuarter
, und mehr .
[0, 999]
, richtig? @thinksteep las den letzten Satz.