Proszę zawierać Nanos, inaczej byłoby trywialne:Jak obliczyć różnicę między dwoma Java java.sql.Timestamps?
long diff = Math.abs(t1.getTime() - t2.getTime());
[EDIT] Chcę najbardziej dokładny wynik, więc nie ma podwójne; tylko liczba całkowita/długa arytmetyczna. Ponadto wynik musi być dodatni. pseudokod:
Timestamp result = abs (t1 - t2);
Przykłady:
t1 = (time=1001, nanos=1000000), t2 = (time=999, nanos=999000000)
-> diff = (time=2, nanos=2000000)
Tak milisekund java.sql.Timestamp powtarzają się w czasie i na równi nano tak 1001 milisekund oznacza 1 sekundę (1000) i 1 Milli który znajduje się w części time
i części nanos
z powodu 1 milisekundy = 1000000 nanosekund). To jest o wiele bardziej przebiegły niż się wydaje.
Proponuję nie pisać odpowiedzi bez faktycznie testowania kodu lub posiadające przykładowy kod gotowy do pracy :)
Tak masz rozwiązanie, które zamierzasz opublikować, jeśli nikt go nie otrzyma? –
Zgodnie z komentarzami w kodzie źródłowym dla datownika, część millis nie jest faktycznie duplikowana w nanosach. Zamiast tego, tylko do sekund sekund są przechowywane w super klasy java.lang.Date, a nanos zapewnia całą resztę czasu. – Richard
@mmyers: Pracowałem nad jednym ale miałem nadzieję, że ktoś miał przykład pracy ratując mój biedny mózg ... ale powinienem był zgadnąć, że nikt nie ma kiedy Google nie zmieniło nic, ale t1.getTime() - t2 .getTime() –