Xin bao gồm các nanos, nếu không nó sẽ là tầm thường:Làm thế nào để tính toán sự khác biệt giữa hai java.sql.Timestamps Java?
long diff = Math.abs(t1.getTime() - t2.getTime());
[EDIT] Tôi muốn kết quả chính xác nhất, vì vậy không đôi; chỉ số nguyên/số học dài. Ngoài ra, kết quả phải dương. Pseudo code:
Timestamp result = abs (t1 - t2);
Ví dụ:
t1 = (time=1001, nanos=1000000), t2 = (time=999, nanos=999000000)
-> diff = (time=2, nanos=2000000)
Vâng, mili giây trong java.sql.Timestamp được nhân đôi trong thời gian và mệnh nanos, vì vậy năm 1001 mili giây có nghĩa là 1 giây (1000) và 1 milli nằm trong phần time
và phần nanos
vì 1 mili giây = 1000000 nano giây). Điều này là nhiều hơn nữa devious hơn nó trông.
Tôi đề xuất không đăng câu trả lời mà không thực sự kiểm tra mã hoặc có sẵn mẫu mã đang hoạt động :)
Vì vậy, bạn có một giải pháp mà bạn sẽ đăng nếu không ai nhận được nó? –
Theo nhận xét trong mã nguồn cho Dấu thời gian, phần millis không thực sự được nhân đôi trong các nano. Thay vào đó, chỉ tối đa giây được lưu trữ trong lớp siêu java.lang.Date, và các nanô cung cấp tất cả thời gian còn lại. – Richard
@mmyers: Tôi đã làm việc trên một nhưng tôi hy vọng rằng ai đó đã có một ví dụ làm việc tiết kiệm bộ não nghèo của tôi ... nhưng tôi nên đoán rằng không ai có khi Google không biến bất cứ điều gì lên nhưng t1.getTime() - t2 .getTime() –