我希望在更改计算机时钟后在Java应用程序中获得时间。 这似乎没有得到正确的时间。
例如
Computer clock reads 1:30pm; new Date() returns 1:30pm
Change computer clock to 12:30pm;
Computer clock reads 12:30pm; new Date() returns 12:30pm
Change computer clock to 1:30pm;
Computer clock reads 1:30pm; new Date() returns 12:30pm
我的Java应用程序是否有可能在时钟中检测到这种变化?
更新:似乎只发生在Chrome ...
答案 0 :(得分:0)
您可以创建一个连续检查X ms后的时间的线程。如果时间偏移量大于+ -N而不是它应该是的(考虑到其他进程可能正在使用处理器,那么可能存在很小的误差)然后创建一个时间偏移量。然后为自己创建一个新的日期类,并添加偏移量以获得时间。
我不知道它是否完全准确,但在大多数情况下都可以使用
编辑: 线程将记录系统时钟的时间并进入休眠状态。
所以例如我们保持1秒的错误raito为线程休眠时间10秒
System clock = 10:00:00
以及Recorded in Thread = 10:00:00
和Difference = null
线程休眠10秒
System clock = 10:00:11
以及Recorded in Thread = 10:00:11
和Difference = 11
offset=0
因为它在允许的限制范围内10 + - 1
线程休眠10秒,系统时钟增加1小时
System clock = 11:00:21
和Recorded in Thread = 11:00:21
以及Difference = 3600
offset = 3599
现在你需要减去这个偏移量,你将得到10:00:22不准确但接近。
答案 1 :(得分:0)
或者您可以阅读启动“日期”的时间
Runtime.exec("date").getInputStream() ...