2012-04-06 58 views
1

我想在更改计算机时钟后在java应用程序中获取时间。 这似乎没有得到正确的时间。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

什么操作系统? – jtahlborn 2012-04-06 18:08:09

+0

我在Windows 7上运行 – sworded 2012-04-06 18:17:40

+1

如果使用IDE重新启动它。他们可能有两个运行相同的jvm实例。 – Ahamed 2012-04-06 18:19:42

回答

0

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

我不知道这是否是完全正确的,但在大多数的情况下

工作

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

所以例如我们保持1秒的误差raito为10秒的线程睡眠时间

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

线程休眠10秒钟

System clock = 10:00:11Recorded in Thread = 10:00:11Difference = 11offset=0作为它在允许的极限内10 + - 1

线程睡10秒c和系统时钟增加1小时

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

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

+2

“检查时间”是什么意思? – sworded 2012-04-06 18:20:59

+0

我看错了问题,所以删除帖子在这里不合适 – 2012-04-06 19:01:45

0

或者你也可以读取时间开展“日”这样的

Runtime.exec("date").getInputStream() ...