1

更改计算机时钟后,我想在 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 中......

4

2 回答 2

0

或者您可以像这样阅读启动“日期”的时间

Runtime.exec("date").getInputStream() ...
于 2012-04-06T19:02:35.987 回答
0

您可以创建一个在 X 毫秒后持续检查时间的线程。如果时间偏移大于 +-N 比它应该是的(认为这是因为其他进程可能正在使用处理器,所以可能存在小错误)然后为时间创建一个偏移量。然后为自己创建一个新的日期类并添加偏移量以获取时间。

我不知道它是否完全准确,但它适用于大多数情况

编辑:线程将记录系统时钟的时间并进入睡眠状态。

因此,例如,我们将 1 秒的错误率保持为 10 秒的线程睡眠时间

System clock = 10:00:00并且Recorded in Thread = 10:00:00Difference = null

线程休眠 10 秒

System clock = 10:00:11并且在允许的范围内 10 +- Recorded in Thread = 10:00:111Difference = 11 offset=0

线程休眠 10 秒,系统时钟增加 1 小时

System clock = 11:00:21并且Recorded in Thread = 11:00:21Difference = 3600 offset = 3599

现在你需要减去这个偏移量,你会得到 10:00:22 不准确但接近。

于 2012-04-06T18:17:56.107 回答