Пожалуйста, включите нано, иначе это будет тривиально:
long diff = Math.abs(t1.getTime () - t2.getTime ());
[EDIT] Я хочу получить самый точный результат, поэтому нет двойников; только целочисленная/длинная арифметика. Кроме того, результат должен быть положительным. Псевдокод:
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
, потому что 1 миллисекунда = 1000000 наносекунд). Это гораздо более коварно, чем кажется.
Я предлагаю не публиковать ответ без фактического тестирования кода или подготовки образца рабочего кода:)