Високосная секунда: зачем к минуте иногда добавляли 61-ю секунду
Как согласовывали атомное время с вращением Земли и почему это сложно для ПО.
Короткий ответ
Високосные секунды добавляли к UTC, чтобы гражданское атомное время не расходилось с неравномерным вращением Земли более чем примерно на 0,9 секунды. Поэтому отдельная минута могла содержать метку 23:59:60.
Почему атомного времени недостаточно
Атомная секунда стабильна, а скорость вращения Земли немного меняется. Шкала UT1 следует вращению Земли, TAI — атомным часам, а UTC связывает их с помощью редких корректировок.
Почему программам сложно
Многие стандартные типы даты не представляют 60-ю секунду. Системы используют ступенчатую коррекцию, растягивание времени или обработку на уровне службы синхронизации. Это влияет на сортировку событий и расчёт длительности.
Практическое правило
Не пишите собственную реализацию UTC и синхронизации. Используйте поддерживаемые системные библиотеки, документируйте поведение источника времени и тестируйте границы отдельно от обычной календарной логики.
Что учитывать на практике
- Не предполагайте идеальную длину суток.
- Используйте системные библиотеки времени.
- Избегайте самодельной синхронизации.
- Тестируйте обработку нестандартных корректировок.
История времени полезна разработчику именно потому, что привычные часы и календарь состоят из соглашений, исключений и меняющихся правил. Для production-кода используйте поддерживаемые библиотеки и проверяйте граничные даты отдельно.
Источники и дополнительное чтение
Итог
Високосные секунды добавляли к UTC, чтобы гражданское атомное время не расходилось с неравномерным вращением Земли более чем примерно на 0,9 секунды. Поэтому отдельная минута могла содержать метку 23:59:60.