首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检测系统时钟是否改变?

检测系统时钟是否改变?
EN

Stack Overflow用户
提问于 2009-07-15 10:53:45
回答 7查看 5.5K关注 0票数 5

我正在考虑一个Java项目的想法,该项目可以检测计算机时钟何时被更改。这个想法是将日期和时间记录在计算机时钟上,并将其存储在一个文件中。然后,我希望能够对其运行规则,以便在时钟更改时显示一条消息。我也在考虑加入一些规则,比如“不允许超过5分钟的更改”。这是为了方便将时间改变为奇数分钟。

我还需要结合时钟所做的更改。例如,在一年中的某些时间(英国时间)向前推进一个小时或向后返回一个小时。

我不确定是否已经有Java系统可以做到这一点,但我真的不知道从哪里开始。

EN

回答 7

Stack Overflow用户

发布于 2009-07-15 12:27:31

Java从系统时钟获取所有的时间/日期信息,因此无法知道底层系统时钟是否已更改。如果您获取日期和时间并将其存储在一个文件中-这将检测时间是否已回拨(即,文件中的时间在当前时间之后,并且没有发生DST )-但它无法检测是否已将时间向前设置(即,文件中的时间比当前时间早2小时-是否确实经过了2小时,或者用户是否在程序未运行时将时钟提前了2小时?)。这样做的唯一方法是使用已知的Time Server,而不是将时间保存在文件中,而是保存时间服务器和本地系统时钟之间的偏移量。

票数 1
EN

Stack Overflow用户

发布于 2009-07-15 12:36:26

如果您可以依赖网络连接的存在,您可以将时间与来自internet时间服务器(CBATG)的时间进行比较。

只需将本地时间和获取的时间转换为相同的时区并存储差值即可。如果diff的变化超过了允许的5分钟,您就知道它已经被修改了。

票数 1
EN

Stack Overflow用户

发布于 2009-07-29 13:00:05

如果我没理解错你的问题,那么你要做的是假设最初系统时钟处于最佳状态。然后,每隔一分钟检索文件中的最后一项(无论您选择哪种方法,无论是最后一项还是第一项),并确保两次之间的差异为60秒或您选择的任何其他时间间隔。

示例:在时间0放入文件12:00:00,时间1,将12:01:00 (从系统时钟检索)与12:00:00 (从文件检索)进行比较,认为没有问题并将其写入文件。..。在某个时刻n,您比较xx:yy:zz,它与最后一个条目的差异不是60秒,因此检测到了更改。..。

我相信您正在讨论的规则包括从文件中获取最后一个条目,并与您从系统时钟检索到的当前时间进行比较。然而,这是否是一种好的方法还存在争议。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1130709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档