2012-04-06 1 views
1

Я хотел бы получить время в приложении java после изменения моих компьютерных часов. Это не похоже на правильное время.Java System Time после смены компьютерных часов

Например

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

+0

Я запускаю Windows 7 – sworded

+1

Если вы используете IDE, перезапустите его. Они могут иметь одинаковые экземпляры jvm для запуска. – Ahamed

ответ

0

Вы можете создать тему, которая непрерывно проверяет время после X мс. если смещение по времени больше, чем + -N, чем то, что должно быть (принимая это, так как другие процессы могут использовать процессор, так что может быть небольшая ошибка), тогда создайте смещение для времени. Затем создайте новый класс даты для себя и добавьте смещение, чтобы получить время.

я не знаю, если это абсолютно точным, но он будет работать в большинстве случаев

EDIT: нить будет записывать время системных часов и будет идти спать.

так, например, мы бдительно Raito ошибки 1sec в течение времени сна Thread 10 сек

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

Thread спит на 10 сек

System clock = 10:00:11 и Recorded in Thread = 10:00:11 и Difference = 11offset=0 как он находится в допустимом пределе. 10 + - 1

Резьба спит на 10 сек. с и SYS часы увеличились на 1 час

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

теперь вам нужно вычесть это смещение, и вы получите 10:00:22 не точно, но близко.

+2

Что вы подразумеваете под «проверяет время»? – sworded

+0

Я прочитал вопрос не так, так было, чтобы удалить сообщение, это не подходит здесь –

0

Или вы можете прочитать время запуск «Дата», как этот

Runtime.exec("date").getInputStream() ... 
Смежные вопросы