我正在考虑一个Java项目的想法,该项目可以检测计算机时钟何时被更改。这个想法是将日期和时间记录在计算机时钟上,并将其存储在一个文件中。然后,我希望能够对其运行规则,以便在时钟更改时显示一条消息。我也在考虑加入一些规则,比如“不允许超过5分钟的更改”。这是为了方便将时间改变为奇数分钟。
我还需要结合时钟所做的更改。例如,在一年中的某些时间(英国时间)向前推进一个小时或向后返回一个小时。
我不确定是否已经有Java系统可以做到这一点,但我真的不知道从哪里开始。
发布于 2009-07-15 12:27:31
Java从系统时钟获取所有的时间/日期信息,因此无法知道底层系统时钟是否已更改。如果您获取日期和时间并将其存储在一个文件中-这将检测时间是否已回拨(即,文件中的时间在当前时间之后,并且没有发生DST )-但它无法检测是否已将时间向前设置(即,文件中的时间比当前时间早2小时-是否确实经过了2小时,或者用户是否在程序未运行时将时钟提前了2小时?)。这样做的唯一方法是使用已知的Time Server,而不是将时间保存在文件中,而是保存时间服务器和本地系统时钟之间的偏移量。
发布于 2009-07-15 12:36:26
如果您可以依赖网络连接的存在,您可以将时间与来自internet时间服务器(CBATG)的时间进行比较。
只需将本地时间和获取的时间转换为相同的时区并存储差值即可。如果diff的变化超过了允许的5分钟,您就知道它已经被修改了。
发布于 2009-07-29 13:00:05
如果我没理解错你的问题,那么你要做的是假设最初系统时钟处于最佳状态。然后,每隔一分钟检索文件中的最后一项(无论您选择哪种方法,无论是最后一项还是第一项),并确保两次之间的差异为60秒或您选择的任何其他时间间隔。
示例:在时间0放入文件12:00:00,时间1,将12:01:00 (从系统时钟检索)与12:00:00 (从文件检索)进行比较,认为没有问题并将其写入文件。..。在某个时刻n,您比较xx:yy:zz,它与最后一个条目的差异不是60秒,因此检测到了更改。..。
我相信您正在讨论的规则包括从文件中获取最后一个条目,并与您从系统时钟检索到的当前时间进行比较。然而,这是否是一种好的方法还存在争议。
https://stackoverflow.com/questions/1130709
复制相似问题