2017-09-20 2 views
-2

Ich habe eine Unix-Zeit seit epoc in milisecond z.B .: 1505913038295UNIX Zeit mit Nanosekunde Präzision

Ich brauche dies in zwei Dinge zu schneiden. Also kann ich mit der Java-Instant-Klassenmethode verwenden.

Instant ofEpochSecond(long epochSecond, long nanoAdjustment) 
  1. Sekunden seit Epoche (Das kann ich tun) lange secondsSince1970 = milisecondsSince1970/1000;

  2. Das brauche ich Hilfe. Ich brauche den Rest der Millisekunden, sagen wir 295 (1. Frage: Wie bekomme ich den Rest) dann wandle das in Nanosekunden um, dann hol das aktuelle System.nanoTime() und füge es dem Nano-Ramainder hinzu.

Mi 20. September 2017 13.21.33 + [Rest mili in nano + nono jetzt] [Sekunden seit epoc] + [miliseconds seit epoc in nano + nono]

Dann hoffentlich kann ich Rufen Sie Instant.ofEpochSecond, etwas in der Art.

Instant convertedTimestamp = Instant.ofEpochSecond(secondsSince1970, remaindingNanoTime % 1000000000L); 

Ich hoffe, das macht Sinn.

+1

Was für? Was versuchst du damit zu tun? Vielleicht möchten Sie auch die Dokumentation zu 'System.nanoTime()' lesen. – Kayaman

+2

Wenn ich richtig verstanden habe, was Sie brauchen, ist 'Instant.ofEpochMilli (1505913038295L) .plusNanos (System.nanoTime())'. Ist das? –

+0

Probieren Sie Folgendes aus: 'Instant.ofEpochSecond (Millis/1000, Millis% 1000 * 1000_000L);' –

Antwort

0

Wenn ich das richtig verstehe, was Sie wollen, versuchen Sie so etwas wie dieses:

Instant.ofEpochMilli(millis).plusNanos(System.nanoTi‌​‌​me() % 1000_000L); 
+0

Seien Sie vorsichtig damit. System.nanoTime() ist normalerweise nicht mit der Systemuhr synchronisiert, die für System.currentTimeMillis() verwendet wird! Es gibt keine portable Möglichkeit, auf eine Uhr mit Nano-Präzision zuzugreifen. System.nanoTime kann verwendet werden, um Dauer zu berechnen, kann aber nicht sicher als Wanduhrzeit interpretiert werden! –