2013-05-11 2 views
1

Это простой вопрос, но я нервничаю по поводу того, насколько сложным может быть ответ.Рассчитать, сколько часов с эпохи?

Я хочу узнать в своем заявлении, сколько часов прошло с эпохи. Более конкретно, я хочу знать «сколько раз, поскольку эпоха имеет GMT часы закончились: 00»

Обычно я бы просто сделать:

number_of_seconds_since_epoch/3600 

, но я не совсем уверен, что если в час составляет ровно 3600 секунд. Я продолжаю слышать о том, как земля замедляется и ускоряется, и как скачутся странные вещи и т. Д.

Может ли кто-нибудь показать мне правильный способ сделать это на любом языке? Благодаря!

+1

Время от времени есть прыжок в секунду, тогда у вас есть час с 3601 секундой. –

+0

UNIX время не заботится о вращении Земли. В UNIX время 1 час составляет ровно 3600 секунд. – pmg

+0

@ DanielFischer, это то, о чем я беспокоюсь, lol. – Verdagon

ответ

0

Будьте осторожны здесь. В зависимости от того, как вы получаете онемение секунд с эпохи, вам, вероятно, не нужно заботиться о секундах прыжка. Если вы вызовете API операционной системы, вы получите только количество секунд с эпохи 1970-01-01T00: 00: 00.

Для адаптации дат к вращению Земли были добавлены секунды прыжка. Просто подсчет секунд с тех пор, как вернулись ОС API.

1

Системы Java, как и многие компьютерные системы, предполагают, что каждый день как 24 часа (и некоторые из них имеют переход на летнее время). Секундные секунды обрабатываются как нормальная коррекция времени дрейфа и обрабатываются через ОС и протоколы, такие как NTP или PTP.

GMT не имеет изменений экономии дневного света, так что вы можете рассчитать количество часов с эпохи с

int hours = (int) (System.currentTimeMillis()/3600000); 
1

Существует дискуссия о високосных секунд Дата API, один из пунктов:

Большинство компьютерных часов не являются достаточно точными, чтобы отражать скачкообразное различие.

Смежные вопросы