Bạn dường như được yêu cầu hai điều rất khác nhau:
- Khi một người dùng hoặc hệ thống quản trị gây ra đồng hồ của máy tính phải được điều chỉnh hoặc điều chỉnh đến một thời điểm nhất định (hoặc để thiết lập cho đúng hiện tại ngày giờ hoặc ngày khác trong tương lai/trong tương lai cho mục đích kiểm tra hoặc bất chính).
- Khi giờ phút được hiển thị thay đổi cho một sự kiện như Daylight Saving Time (DST).
Clock thao tác
Đối với người đầu tiên, không có cách nào đơn giản tốt để làm điều đó. Đôi khi bạn có thể lấy mẫu ngày giờ hiện tại, ghi lại, sau đó lấy mẫu lại sau. Bạn sẽ làm điều này trong UTC để tránh nhầm lẫn các thay đổi mùa thu DST khi thay đổi người dùng/sysadmin.
Mã mẫu sử dụng các lớp java.time. Tránh các lớp non-java.time đã lỗi thời cũ vì chúng được thiết kế kém, gây nhầm lẫn và phiền hà.
Instant now1 = Instant.now(); // Record, run again, compare.
String now1AsString = now1.toString(); // Ex: 2011-12-03T10:15:30.724Z
…
Instant now2 = Instant.now();
Boolean timeWentBackwards = now2.isBefore(now1);
Tất nhiên bạn không thể sử dụng kỹ thuật này để điều chỉnh trong tương lai, chỉ trong quá khứ. Đồng hồ luôn chuyển sang tương lai.
Cách đáng tin cậy duy nhất để phát hiện tình trạng molestation của đồng hồ là có nhiều hơn một đồng hồ. Bạn cần có quyền truy cập đáng tin cậy (kết nối) vào một đồng hồ đáng tin cậy, có thể là máy chủ thời gian trên mạng của bạn hoặc máy chủ thời gian trên Internet. Thậm chí sau đó, chỉ có một cặp đồng hồ có thể khó khăn. Như câu ngạn ngữ biển xa xưa nói, "Mang theo một chiếc la bàn, hoặc ba."
DST roll-overs
Phát hiện thay đổi DST không liên quan. Thực hành tốt nhất trong việc xử lý ngày giờ là làm việc trong UTC. Điều này bao gồm hầu hết logic kinh doanh, lưu trữ dữ liệu và trao đổi dữ liệu của bạn.
Hãy nhớ: Thời gian trong ngày lăn tiến hoặc lùi với DST là vô nghĩa - thời gian tiếp tục chảy, không bị cong, với cùng số giây trôi qua.
Nguồn
2016-07-09 23:21:15
Tôi đề nghị bạn thay đổi tiêu đề để có ý nghĩa hơn ... một cái gì đó như "phát hiện khi thay đổi đồng hồ hệ thống". –
Tôi nghĩ rằng OP là đề cập đến "thời gian thay đổi" như một cái gì đó bên ngoài hành vi đồng hồ bình thường. Khi đồng hồ hệ thống được cập nhật theo cách thủ công để chuyển tiếp hoặc lùi đáng kể bởi người dùng hoặc quản trị viên máy tính hoặc bằng cách tự động đồng bộ hóa với thời gian mạng. –