So berechnen Sie die Differenz zwischen zwei Java-java.sql.Zeitstempel?

Bitte die nanos, sonst wäre es trivial:

long diff = Math.abs(t1.getTime () - t2.getTime ());

[EDIT] ich möchte das Genaueste Ergebnis, so dass keine Doppelbetten, nur integer/long-Arithmetik. Auch das Ergebnis muss positiv sein. Pseudo-code:

Timestamp result = abs (t1 - t2);

Beispiele:

t1 = (time=1001, nanos=1000000), t2 = (time=999, nanos=999000000)
 -> diff = (time=2, nanos=2000000)

Ja, Millisekunden in java.sql.Zeitstempel werden dupliziert, in die Zeit und die nanos par, also 1001 Millisekunden bedeutet 1 Sekunde (1000) und 1 milli, die in der time Teil und die nanos Teil, weil 1 Millisekunde = 1000000 Nanosekunden). Dies ist viel mehr hinterhältig als es aussieht.

Schlage ich vor, nicht zu veröffentlichen, eine Antwort, ohne tatsächlich den code testen oder dass ein funktionierendes code-Beispiel bereit 🙂

Also, habt Ihr eine Lösung, dass du gehst zur post, wenn nicht bekommt man es?
Laut den Kommentaren im sourcecode für Zeitstempel, die millis Teil ist eigentlich nicht dupliziert in den nanos. Stattdessen nur bis zu den Sekunden gespeichert sind, in die super-Klasse von java.lang.Datum, und die nanos bietet alle den rest der Zeit.
Ich war an einem arbeitet, aber ich habe gehofft, dass jemand einen funktionierenden Beispiel retten mein Armes Gehirn ... aber ich sollte erraten haben, dass niemand, wenn Google sich nicht alles, aber t1.getTime()-t2.getTime () -
Ja. Das hinterhältige daran ist, dass Sie das richtige tun intern. Wenn Sie rufen Sie die API verwenden, mischen die millis in die beiden Felder; siehe meine unit-tests, wie komisch das aussieht.
Verdammt! dieser Mist hat mich EINE STUNDE! =8*O

InformationsquelleAutor Aaron Digulla | 2009-02-24

Schreibe einen Kommentar