Пожалуйста, включите нанос, иначе это будет тривиально:
long diff = Math.abs(t1.getTime () - t2.getTime ());
[РЕДАКТИРОВАТЬ] Я хочу самый точный результат, поэтому не удваивается; только целочисленная / длинная арифметика. Также результат должен быть положительным. Псевдокод:
Timestamp result = abs (t1 - t2);
Примеры:
t1 = (time=1001, nanos=1000000), t2 = (time=999, nanos=999000000)
-> diff = (time=2, nanos=2000000)
Да, миллисекунды в java.sql.Timestamp дублируются во времени и в наносаре, поэтому 1001 миллисекунда означает 1 секунду (1000) и 1 миллисекунду, которая находится в части time
и части nanos
, потому что миллисекунда = 1000000 наносекунд). Это гораздо хитрее, чем кажется.
Я предлагаю не публиковать ответ без фактического тестирования кода или подготовки готового примера кода:)