Дракон из зажопинска.
В декабре узнал о прибавке дополнительной секунды в конце года. Ради интереса решили проверить, знают ли об этом часы на компе. Как оказалось, знают. Правда, 60-ю секунду отображать не умеют. Для проверки ближе к 0 часам ввели команду:

while {true} {date; sleep 1}

При этом результат выглядел так:

...
2008-12-31 23:59:55
2008-12-31 23:59:56
2008-12-31 23:59:57
2008-12-31 23:59:58
2008-12-31 23:59:59
2008-12-31 23:59:59
2009-01-01 00:00:00
2009-01-01 00:00:01
2009-01-01 00:00:02
2009-01-01 00:00:03
2009-01-01 00:00:04
...

Комментарии
05.01.2009 в 20:03

Отцово.
Это виндовсовские часы? Такие переходы закладываются в алгоритмах часов? Если так, то на сколько лет вперёд заложены подобные корректировки? Или эти корректировки периодичны?
05.01.2009 в 22:13

Йа волосат и бородат!
-DRACO-, хороший вопрос. Имхо, все это давно уже рассчитано извращенцами вроде г-на Зеллера. Извращенцами только потому, что только извращеннйы мозг мог придумать формулу для определения дня недели по дате (см. формула Зеллера)
06.01.2009 в 18:03

Дракон из зажопинска.
-DRACO-
Что там с виндовскими часами и умеют ли они выводить что-то ещё, кроме синих экранов, не знаю, не проверял. Кто-нибудь из виндузятников пробовал наблюдать это дело?
А вот у наших часов такая фишка оказывается есть. Правда, является ли она заранее запрограммированной, или это как-то заранее сообщается сервером точного времени, с которым периодически производится синхронизация, не в курсе. На штатную опцию прибавки тоже не похоже, как я понял, оно не каждый год прибавляется. В общем, не знаю откуда берётся и где заложено .
06.01.2009 в 19:55

или это как-то заранее сообщается сервером точного времени, с которым периодически производится синхронизация, не в курсе
Дак у вас синхронизация с часами какого-то сайта? Ну тогда всё понятно.
Я тогда вообще не понимаю, почему у вас возникла такая заинтересованность.
06.01.2009 в 20:06

Дракон из зажопинска.
Само собой что есть внешняя синхронизация. Он она же не в реальном времени проводится, и не в 0 часов. Если бы дело было в этом, часы просто бы подправились при очередном запросе точного времени с сервера. А тут получается что информация о лишней секунде часам была известна заранее, значит у них уже предусмотрен какой-то механизм на этот счёт. Даже если взялась она с сервера, произошло это во время прошлой синхронизации, то есть за несколько часов до события. Это и интересно.
06.01.2009 в 20:55

А тут получается что информация о лишней секунде часам была известна заранее
Известна той программе, которая управляет часами и синхронизирует их с сервером.
06.01.2009 в 21:26

Дракон из зажопинска.
Ради интереса проверим и этот вариант.
15.01.2009 в 04:57

Дракон из зажопинска.
Вот наконец-то собрался описать то, что выяснил.

Во-первых, как я понял, постоянной информации о прибавляемых секундах нет и она действительно передаётся заранее с сервера синхронизации (с опережением в несколько месяцев). Во-вторых, это штатная опция часов, то есть получив эту информацию, они её в нужное время отрабатывают.

Теперь что касается самих часов. Вообще, линуксовые часы не делают никаких скачков времени для коррекции, это недопустимо, так как возможны ошибки в программах, чувствительных к непрерывности времени. Поэтому часы, получив информацию о коррекции не пытаются тупо переставить время, а изменяют скорость хода, ускоряясь или замедляясь, пока не выполнится коррекция.

Ну и что касается дополнительной секунды, вот тут есть статья на эту тему, там же сказано про системные часы в ОС:
Linux kernels and most other Unix-like systems care about the leap seconds and handle them correctly. Some systems even add a notification to the system log when the leap second is inserted.

Ну и разумеется:
The Windows system clock does not know about leap seconds

Кстати, это правда, что Микрософт для своей последней версии системы выпустила новый стандарт клавы, содержащий кнопки левого и правого ресета, как наиболее частоиспользуемые?

Расширенная форма

Редактировать

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail