更改计算机时钟后的Java系统时间
我想在更改计算机时钟后在java应用程序中获取时间。 这似乎不是正确的时间 比如说更改计算机时钟后的Java系统时间,java,clock,systemtime,Java,Clock,Systemtime,我想在更改计算机时钟后在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;
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中…您可以创建一个线程,在X ms后继续检查时间。如果时间偏移大于+-N(将其视为其他进程可能正在使用处理器,因此可能存在小错误),则创建时间偏移。然后为自己创建一个新的日期类,并添加偏移量以获取时间 我不知道它是否完全准确,但它在大多数情况下都会起作用 编辑: 线程将记录系统时钟的时间并进入睡眠状态 例如,我们将错误raito保持为1秒,线程睡眠时间保持为10秒
系统时钟=10:00:00
和记录在线程=10:00:00
和差异=null
线程休眠10秒
系统时钟=10:00:11
和记录在线程=10:00:11
和差异=11
偏移=0
,因为它在允许的限制10+-1之内
线程休眠10秒,系统时钟增加1小时
<代码>系统时钟=11:00:21和记录在线程中=11:00:21
和Difference=3600
offset=3599
现在你需要减去这个偏移量,你会得到10:00:22不准确,但很接近。或者你可以像这样读取启动“日期”的时间
Runtime.exec("date").getInputStream() ...
如果您正在使用IDE,请重新启动它。它们在运行时可能具有相同的jvm实例。我不想重新启动IDE。无法在使用Java7的Win7 x64上的eclipse中重现此行为。发布SSCCE-这显然不是预期的行为,因为
new Date()
应该使用系统时间,与nanoTime相反,nanoTime并不保证单调性。我正在运行Java 1.6.0.30。Java7解决了这个问题吗?发布一个,我们可以检查一下。date API似乎不太可能有这样一个奇怪的错误。你说的“检查时间”是什么意思?我看错了问题,所以要删除帖子在这里是不合适的