Приношу извинения Патрику МакКензи.
Вчера Дэнни поинтересовался любопытными фактами о Unix-времени, а я вспомнил, что иногда оно работает совершенно неинтуитивно.
Вот эти три факта кажутся в высшей степени разумными и логичными, не так ли?
Всё это неправда.
Но недостаточно просто заявить «Всё это неправда», не объяснив, почему. Объяснения см. ниже. Но если хотите сами подумать, не прокручивайте изображение часов!
Настольные часы 1770-х годов. Собрано Джоном Леру. Из коллекции Wellcome. Опубликовано под лицензией CC BY
У всех трёх заблуждений одна причина: високосные секунды. Если вы не знакомы с дополнительными секундами, вот краткая справка:
Время UTC определяется двумя факторами:
Проблема в том, что эти два числа не всегда совпадают. Вращение Земли не является последовательным — оно постепенно замедляется, поэтому сутки во Всемирном времени становятся длиннее. С другой стороны, атомные часы дьявольски точны и постоянны в течение миллионов лет.
Когда два времени выпадают из синхрона, в UTC добавляется или удаляется секунда, чтобы вернуть синхронизацию. С 1972 года служба IERS (которая управляет этим делом) добавила 27 дополнительных секунд. В результате получилось 27 суток UTC продолжительностью в 86 401 секунду. Теоретически возможно появление суток продолжительностью 86 399 секунд (минус одна). Оба варианта противоречат фундаментальному предположению о Unix-времени.
Время Unix предполагает, что каждый день длится ровно 86 400 секунд (60 ? 60 ? 24 = 86 400), без всяких дополнительных секунд. Если происходит такой скачок, то время Unix либо перепрыгивает через секунду, либо отсчитывая две секунды за одну. По состоянию на 2019 год в нём отсутствует 27 високосных секунд.
Так что наши заблуждения нужно дополнить следующим образом:
Вероятно, это не единственные странности времени Unix — только то, что я вчера вспомнил.
Время — очень странная штука.
Вчера Дэнни поинтересовался любопытными фактами о Unix-времени, а я вспомнил, что иногда оно работает совершенно неинтуитивно.
Вот эти три факта кажутся в высшей степени разумными и логичными, не так ли?
- Время Unix — это количество секунд с 1 января 1970 года 00:00:00 UTC.
- Если подождать ровно одну секунду, то время Unix изменится ровно на одну секунду.
- Время Unix никогда не двигается назад.
Всё это неправда.
Но недостаточно просто заявить «Всё это неправда», не объяснив, почему. Объяснения см. ниже. Но если хотите сами подумать, не прокручивайте изображение часов!
Настольные часы 1770-х годов. Собрано Джоном Леру. Из коллекции Wellcome. Опубликовано под лицензией CC BY
У всех трёх заблуждений одна причина: високосные секунды. Если вы не знакомы с дополнительными секундами, вот краткая справка:
Время UTC определяется двумя факторами:
- Международное атомное время: усреднённые показания сотен атомных часов по всему миру. Мы можем измерить секунду по электромагнитным свойствам атома, и это самое точное измерение времени, известное науке.
- Всемирное время, основанное на вращении Земли вокруг собственной оси. Один полный оборот — одни сутки.
Проблема в том, что эти два числа не всегда совпадают. Вращение Земли не является последовательным — оно постепенно замедляется, поэтому сутки во Всемирном времени становятся длиннее. С другой стороны, атомные часы дьявольски точны и постоянны в течение миллионов лет.
Когда два времени выпадают из синхрона, в UTC добавляется или удаляется секунда, чтобы вернуть синхронизацию. С 1972 года служба IERS (которая управляет этим делом) добавила 27 дополнительных секунд. В результате получилось 27 суток UTC продолжительностью в 86 401 секунду. Теоретически возможно появление суток продолжительностью 86 399 секунд (минус одна). Оба варианта противоречат фундаментальному предположению о Unix-времени.
Время Unix предполагает, что каждый день длится ровно 86 400 секунд (60 ? 60 ? 24 = 86 400), без всяких дополнительных секунд. Если происходит такой скачок, то время Unix либо перепрыгивает через секунду, либо отсчитывая две секунды за одну. По состоянию на 2019 год в нём отсутствует 27 високосных секунд.
Так что наши заблуждения нужно дополнить следующим образом:
- Время Unix — это количество секунд с 1 января 1970 00:00:00 UTC минус високосные секунды.
- Если подождать ровно одну секунду, время Unix изменится ровно на одну секунду, если не была удалена дополнительная секунда.
До сих пор на практике секунды никогда не удалялись (и замедление вращения Земли означает, что это маловероятно), но если бы это когда-либо произошло, это означало бы, что день UTC стал на одну секунду короче. В этом случае последняя секунда UTC (23:59:59) отбрасывается.
В каждых сутках Unix одинаковое количество секунд, поэтому последняя Unix-секунда укороченного дня не будет соответствовать никакому времени UTC. Вот как это выглядит, в интервалах по четверти секунды:
Если стартовать в 23:59:58:00 UTC и подождать одну секунду, время Unix продвинется на две секунды UTC, а метка времени Unix 101 никому не назначается.
- Время Unix никогда не может вернуться назад, пока не добавлена дополнительная секунда.
Это уже 27 раз произошло на практике. По окончании суток UTC добавляют дополнительную секунду 23:59:60. В сутках Unix одинаковое количество секунд, поэтому он не может добавить дополнительную секунду — вместо этого приходится повторять метки времени Unix для последней секунды. Вот как это выглядит, в интервалах по четверти секунды:
Если стартовать в 23:59:60.50 и подождать полсекунды, время Unix возвращается на полсекунды, а метка времени Unix 101 соответствует двум секундам UTC.
Вероятно, это не единственные странности времени Unix — только то, что я вчера вспомнил.
Время — очень странная штука.
TheGodfather
Сразу вспомнил «Заблуждения программистов относительно времени» — habr.com/ru/post/146109
agarus
Еще есть видео на близкую тему:
onix74
— Время — это лишь субъективное восприятие реальности. Ведь часы, по сути, измеряют сами себя. Показания часов можно объективно сравнивать только с другими часами…
— Молодой человек, я вам ещё раз повторяю: «Водку после 22:00 мы не продаём!».
PS. Навеяло… :-)
Koyanisqatsi
Почему это субъективное?
onix74
Ну не нужно всё так буквально воспринимать. Это всего лишь анекдот.
ibKpoxa
Ну если сравнить полчаса на раскаленной сковородке и полчаса с красивой девушкой… то да, время это нечто субъективное.
AllexIn
Время очень объективно. А вот ощущение времени…
didkovskyi
В природе есть только последовательность событий, время и течение времени придумали люди.
AllexIn
«В природе есть только атомы, а вот расстояние и скорость придумали люди.»
Нет, люди не придумали. Люди выбрали способ измерения.
didkovskyi
И как же можно померять время объективно?
AllexIn
Любым процессом период которого близок к константному.
Скажите что это не абсолютно объективно? Так мы и расстояние абсолютно объективно измерить не способны.
didkovskyi
Опять же на основании чего-то вам нужно определить «константность» роцесса. В сухом остатке вы можете сравнивать только один процесс с другим. И если в системе есть только два процесса, которые вы можете сопоставлять, то в случае сбоя, как вы определите какой именно процесс дал сбой?
AllexIn
Ровно такой же вопрос про изменение расстояния можно задать.
Будете?
didkovskyi
Это не ответ на вопрос. Минусовать можно сколько угодно :)
AllexIn
Ответ на вопрос на два сообщения выше от этого.
Если вы считаете, что расстояния тоже «выдуманы» — обсуждать нечего. Если с расстоянием всё ок, то жду от вас описания разницы между расстоянием и временем с точки зрения подсчета.
didkovskyi
Я вас спросил конкретно про время. Говорим мы о времени. Я задал четкий простой вопрос. Вы по какой-то причине ответить не можете и уводите тему в сторону.
AllexIn
Как померить время объективно?
Ровно также как расстояние. Я ответил на четыре сообщения выше от этого.
Вас ответ не устраивает? Чем?
mkovalevskyi
Оффициальное определение секунды:
Насколько я помню, достичь 0к, на данный момент немного проблематично (да, можно экстраполировать итд). Так что время — достаточно такая себе величина ;)
Другой вопрос, что эталонное определение метра, на данный момент, таки тоже зависит от времени. Так что уровень субьективности \ обьективности у них достаточно одинаков.
AllexIn
Об этом и речь. Время ничем особо не отличается от любой другой характеристики мира, которую мы пытаемся как-то измерять.
didkovskyi
«Человек с земли»?
Zalechi
Есть атомное время, есть вращение земли.
Одного не могу понять, зачем корректировать время суток, обманывая самих себя в первую очередь?
Этот же вопрос касается високосного года.
Мы подстраиваем календари и течение времени вместо точной синхронизации с процессами из природы/космоса…
trolley813
Это скорее не странности времени Unix, а странности UTC. Согласен с Zalechi — корректировать время суток особого смысла нет, вращение земли изменяется слишком медленно. Даже если каждый год (не) добавлять по секунде (а необходимость в этом возникает далеко не каждый год — кто знает, а вдруг придется и убрать лишнюю секунду), то через 300 лет (по астрономическим меркам совсем мало, а по "человеческим" (и компьютерным) — совсем нет) время отклонится от "истинного" всего на 5 минут. Подавляющее большинство людей не заметит, что солнце стало восходить на минуту позже, чем оно восходило 60 лет назад. Ну и наконец, если накопится слишком большая разница, можно и в другой часовой пояс перейти. Но произойдет это очень и очень нескоро...
Zalechi
Больше того, не могу понять кому это выгодно — корпорациям, составителям календарей, государству? Кого мы обманываем? Есть астрономический год, который по идее со временем так же замедляется, то есть увеличивается. Есть галактический год, но мы им не пользуемся в наших айфонах, поэтому оставим в покое. Но вот привычные нам календари, зачем их вертеть? Я понимаю вопрос генной инженерии, когда мы внедряемся в геном с целью исцеления серьезных патологий(забудем про этичность на минутку). Я понимаю, что в прежние времена не быо тех достижений что мы имеем сейчас и было удобней, скажем, считать зарплаты или ещё там какой учёт вести, подстраивая календари и время суток. Но сейчас то чего? Просто объясните толковые люди в этой области?
u_235
Когда последний раз календарь изменился?
Zalechi
Високосный год — об этом изменение календаря. И вот к чему оно? Дышать от него легче, денег в зарплату прибавляют или всё-таки сон короче становится?
u_235
Вообще-то високосный год появился задолго до атомных часов, компьютеров и ИТ. И, как и дополнительные секунды, появился он с одной целью — что бы время как можно точнее соответствовало астрономическому.
Zalechi
Вы не поняли. Я о том, что земля вращается вокруг солнца, и не бывает такого, что раз в четыре года она делает это на сутки дольше.
Понимайте, люди зациклились на круглых часах с оборотом в 360 градусов, и пока не желеают отпускать календарное время в свободное плавание. Вот им нужно зачем-то(тут как раз я и задаюсь вопросом — зачем?) впихивать суточные и годовые ритмы в это круглое табло поделённое на 24 часа и сколько там дней…
Видать так проще, всем…
nckma
Но ведь тогда, если раз в 4 года не добавлять один день в феврале, то через сотни лет январь уже будет приходиться на теплую осеннюю погоду. Оно вам надо такое?
nerudo
Ах как хочется немножко тепла в январе :)
worldmind
Да у некоторых отщепенцев это уже так и ничего, выживают.
mkovalevskyi
Вы это банкам расскажите, особенно связанным с торгами на бирже, что «плюс минус день — то такое в пределах вечности» ))
Там счет на миллисекунды идет, и им ооочень интересно знать который же на данный момент час, с точностью до вышеозначенных миллисекунд.
Tarakanator
Биржам вообще пофиг на астрономический день.
semen-pro
Секунду прибавляют (отнимают) уже после закрытия торгов на бирже
deadNightTiger
Предлагаете иметь нецелое количество дней в году? Или 6 часов в году, не присвоенных никакому календарному дню? Или приделать к Земле ракетные двигатели, чтобы год длился ровно 365 дней? :)
Zalechi
По-моему нормально и русским языком написал, Что хотелось бы, что бы год длился 365,2 дня в году, но ниже в комментариях люди напомнили, что тогда было бы трудно считать недели, выходить на работу, ставить будильник, — короче с расписаниями была бы проблема. Больше вопросов не имею.
Неужели я не нормально оформил вопрос?
Carburn
Ты про 365,2 ничего не писал.
RomanPyr
Есть вопрос по-интересней: зачем нужны недели?
VolCh
Чтобы знать когда отдыхать :) Вроде во всех славянских языках, кроме русского, слово фонетически и этимологически близкое к русскому "неделя" обозначает русское воскресенье, день отдыха, день когда ничего не делают. В русском остался понедельник, день после недели, день после отдыха
sumanai
Китайцы про это уже фильм сняли. Они что-то знают.
SofaKing18
Да, так действительно проще всем.
Если вы хотите, чтобы календарное время соответствовало астрономическому — то надо придумать удобный способ это время измерять.
Многие люди не могут читать время на круглых циферблатах и путают 12AM и 12PM, поэтому не стоит усложнять
up40k
12am is noon in Japan
didkovskyi
Точнее солнечному времени. Есть еще и звездное время в котором сутки отличаются от солнечного.
DoctorMoriarty
Рекомендую к прочтению:
ru.wikipedia.org/wiki/Високосный_год
Zalechi
Очень остроумно, наверно и земля повинуясь вашим прихотям, один раз в четыре года окружает солнце медленней на сутки…
Welran
Вообще то Земля, наплевав на ваши прихоти, никак не хочет проходить вокруг Солнца за целое число дней (и даже за целое число дней за четыре круга). Поэтому люди решили что лучше добавлять високосный год чем радоваться теплому солнышку в январе.
Zalechi
— перестаньте переходить на личности, бо обхаркаю. Любите жонглировать, тусуйтесь в цирке, скажем. Вам это может не нравится, но мне хотелось бы без подгонок часов в сутках и дней в году существовать, но я при этом от лица небесных тел в нашей системе на Вас не харкал.
FRiMN
Потому, что секунда не имеет никакого отношения к взаимному перемещению Солнца и Земли. Соответственно вы не можете определить секунду через это перемещение.
А вообще вот вам, про сложности в расчете времени: https://ru.wikipedia.org/wiki/Всемирное_время
Zalechi
УважемЫЕ. Я вас умоляю — прежде чем писать комментарий, удостоверьтесь, что «слышали звон и поняли от куда он». Взрослые люди, а нет Вас тыкать носом надо в корень этой ветки комментариев? Полистайте наверх и напишете своё мнение, и прошу, без перехода на личности.
Для особо упёртых и одарённых не поленюсь линк выставить. Простит за эмоции, но Вы просто посмотрите сколько пустой и тривиальной чуши накопилось — линк habr.com/ru/post/452584/#comment_20175064
FRiMN
Так к чему вы предлагаете привязать календарную секунду?
И на личности я не переходил, если что.
Вы сетовали, что люди не привязываться к природным процессам — я вам дал ссылку именно на такие форматы времени.
eridium
А ведь при этом раз в какое-то количество лет нужно будет проводить сдвиг.
Там посадку c/х культур к концу столетия уже нужно пересчитывать (25 дней разницы как-никак). Все научные расчеты проводить с дельтой времени… Нет, так жить тоже можно. Просто нужен новый математический аппарат для подчета без високосных.
Alexandr0202
Предположу, что знание точного времени может иметь большое значение в астрономии. И знание нюансов расчета времени Unix там пригодятся.
APXEOLOG
Зачем в США используют имперскую систему измерения с нелогичными соотношениями, тогда как почти весь мир использует куда более логичную метрическую?
vlivyur
Не весь ещё. Но их родитель — Британия, уже почти перешла к метрической.
mehos
В эпоху Youtube странно вслух задаваться таким вопростом, если вы старше 8 лет.
Потому что в сутках 24,0000006 часа, а в году — 365,2421891 дня, вот почему.
Чем сто раз говорить, лучше один раз увидеть;)
Zalechi
Вы издевайтесь? Ответы я получил ниже, а все что выше это мусор, как и Ваша ссылка.ъ
Soffort
>зачем корректировать время суток, обманывая самих себя в первую очередь?
Чтобы рабочий день продолжал начинаться ровно в девять, а читая книгу пятисотлетней давности ты понимал, что «в 13:00» это примерно полдень, а не вечер и не утро. Условно, конечно. но суть такова.
trolley813
Да вот я выше уже писал — не изменится оно на столько за 500 лет. За 5000 — может быть, и то не факт. Да и часто ли мы даже сейчас читаем 500-летние книги (особенно с описанием точного времени в них)? Кроме того, и рабочий день 500 лет назад далеко не в 9 начинался.
grondek
Високосный год — раз в 4 года. За столетие календарь сместится почти на месяц.
Происходит это потому что периоды обращения Земли вокруг Солнца и вокруг своей оси не кратны друг другу. Поэтому приходится раз в 4 года компенсировать 1 день. А раз в 100 лет, если правильно помню, год который должен был быть високосным — будет обычным. Потому что прибавка 1 дня каждые 4 года это чуточку многовато и надо компенсировать обратно.
ainoneko
Dim0v
Если отменить високосный год, то всего за 120 лет все времена года съедут на целый месяц. А через 500 лет новый год станут отмечать с шашлыками на природе, отмахиваясь от комаров.
Zalechi
А в чем проблема? Больше того, я бы хотел день своего рождения справлять ровно через год, а не — как оно там получается… со всеми этими искажениями.
geher
Так через год — это не через определенное фиксированное время, а в тот же день в том же месяце по используемому календарю.
Конечно, в связи с наличием високосных лет могут возникать накладки (день рождения 29 февраля, например), но родившихся в "неправильные" дни намного меньше, чем остальных, а остальным пофиг.
Могу предложить решение. Создайте свой календарь или найдите древний без вставок (кстати, у Майя с их аж тремя разными продолжительностями годов, используемых одновременно, дни вставлялись?) и празднуйте день рождения по нему. Будет необычно и креативненько.
grondek
За счет коррекций и получается справлять день рождения ровно через год с точность до суток.
Если бы коррекций не было, то день рождения справлялся бы через 365 дней, что примерно на четверть суток меньше времени оборота Земли вокруг Солнца.
Dim0v
У вас 29 февраля день рождения? Если нет, то не понимаю, как у вас может получаться справлять день рождения не ровно через год. И главное — зачем.
В том, что это дико неудобно. Например, придется постоянно корректировать графики огромной кучи различных сезонных мероприятий. Это и даты запуска/отключения централизованного отопления. И графики проведения ремонтных/профилактических работ в системах водоснабжения. Графики ремонта дорог. Графики проведения абсолютно всех аграрных работ. И еще куча всего. Что заденет всех людей без исключения, а не только 0,07% тех, кто родился 29 февраля и других бедолаг, которые хотели бы что-то справлять ровно, а не криво.
geher
По крайней мере в некоторых населенных пунктах нет фиксированного графика этих мероприятий, а все завязывается на среднюю температуру.
Что-то вроде такого: в течение десяти дней подряд среднедневная температура превышает 10 градусов — выключаем, ниже 8 градусов — включаем.
Остальное да, критично по сезонам и не должно существенно (больше нескольких дней) меняться по крайней мере за столетие.
Iwanowsky
В постановлении Правительства РФ от 2011г. описаны нормы включения/отключения центрального отопления: среднесуточная температура ниже 8 градусов в течение 5 дней, а также по постановлению органов местного самоуправления; и то же самое — по отключению его весной.
Zalechi
Да согласен, тоже пару минут назад пришёл к такому выводу, что тем причинам, что Вы описали…
bay73
Проблема в том, что большинство явлений природы привязаны к земным сезонам. Картошку сажают в мае, а азиатские муссоны зимой дуют. Ежегодно переписывать все сельскохозяйственные календари выходит намного накладне, чем добавлять один день раз в четыре года.
chirkin
А в чём проблема? Если хотите ровно — празднуйте себе миллионы секунд со дня рождения, а не года :)
Tarakanator
Если хотите ровно, то празднуйте себе 10^n секунд со для рождения.
Не забудьте выбрать систему счисления.
VolCh
Через год — это через через оборот Земли вокруг Солнца? Так вы будете встречать утро, день, вечер и ночь рождения по очереди.
hunroll
Южному полушарию, вроде бы, это ни капельки не мешает…
Кому это всё принесёт неудобства — Школьники (потому что «летние» каникулы будут динамические, с 15го декабря до 18 марта, например) и Агро-сектор, потому что будет сложнее понять, когда что сеять.
Но с другой стороны, есть же расписание рассветов и закатов на много лет вперёд. Вот так же будет расписание начала весны, осени и тд.
Всем понятно что в ближайшее время никто ничего менять не будет и мы никогда не узнаем, как это будет, но было бы интересно хотя бы посмотреть про это всё фильм)))
А вообще у нас глобальное потепление, все дела, через 100-150 лет будет вечное лето (или зима, как пойдёт), мб и календарь подправят)
Zalechi
Вот я тоже покурил, покумекал, и пришёл к выводу, что не меняют Календарь из-за удобства регламентирования например рабочих недель. То есть, что бы избежать кошмара работодателя. Пожалуй эта главная зависимость в современном мире от корректируемого календаря и времени суток
u_235
Кстати, in Soviet Russia делали эксперименты с календарем.
Zalechi
Да спасибо, до меня уже дошло. И кстати вот два коммента где люди нормально ответили по субъекту моего вопроса:
habr.com/ru/post/452584/#comment_20176648
habr.com/ru/post/452584/#comment_20176072
А большинство комментов, что выше — ну Вы меня простите, но детский сад. И карму загадили, и будут утверждать, что так и должно быть. Да плевал я на них. А вот эти два коммента, как раз то, что я искал
Dim0v
Да. Потому что мешает не тот факт, что новый год летом, а тот факт, что он будет постепенно "плыть" от зимы к лету.
С этим есть одно большое различие и 2 проблемы.
Различие (которое является причиной первой проблемы). Время рассвета и заката меняется по синусоиде. Оно остается в неких рамках. А с отменой високосных годов — времена года будут постоянно ползти в одну сторону. Никаких рамок не будет.
И проблемы:
1) Кто пользуется расписанием закатов и рассветов? Какому проценту населения вообще интересна информация о точном времени рассвета или заката? Единицам. Остальным более чем достаточно общих рамок, о которых я писал выше. А вот постоянная смена графика времен года в той или иной мере заденет всех людей без исключения.
2) Насколько удобно лично вам было бы каждый вечер сверяться с расписанием рассветов прежде, чем завести будильник на утро? Зачем делать так же неудобно и с временами года?
hunroll
Кому сейчас нужен календарь рассветов — Людям, которые хотят встать с рассветом:) мб у них какое-то хозяйство или ещё что-то, что подвязано на этот природный процесс.
Кому нужен будет «календарь весны» — Людям, которые занимаются сельским хозяйством, чтобы знать, когда что высаживать. И то, я не уверен что они подвязаны сейчас на обычный календарь, ведь бывает что в апреле снег и так далее…
Почему он не нужен будет мне (ну и кому-то ещё):
1. Мне всё равно, какая будет погода на новый год. Если я смогу на Новый Год закусывать шампанское свежим шашлычком — даже рад буду)
2. На море я езжу не в сезон, и не езжу, а летаю, потому что слишком бедный чтобы ездить на локальное море в сезон)
3. Каникулы. Школьникам, я думаю, всё равно, какая дата будет на календаре, когда начнутся каникулы. Скажут им что они с 9го марта — ну ок.
4. День рождения — я был бы рад встретить хоть раз с температурой на улице меньше +40…
Я вот только недавно осознал что уже май, когда оставил машину на солнце на целый день… А до этого у меня был примерно март. Вот, наверное, в этом полезна привязка месяцев к временам года, чтоб такие потерянные как я поменьше терялись во времени)
paluke
mkovalevskyi
особенно растениям. фиг с ним, будем зимой сажать )
rvs2016
Это просто все привыкли к тому, что растения надо сажать в определённые месяцы — но всё-равно с учётом погоды, времени суток и т.п. — во время ливня, например, картошку сажать сложно, а ночью — хоть и можно, но зачем…
А вот если привыкнут к другим условиям (например, сажать картошку после схода снегов и когда температура воздуха будет достаточно тёплой в течении некоторого времени), то будут условия такого типа считать вполне привычными.
В мусульманском календаре вон начало месяца определяется даже не по новолунию, а в день, когда после новолуния месяц на небе стал видимым! А это 1-3 дня от новолуния и засвидетельствовать это должны 2 сильно авторитетных мусульманина!
Tarakanator
Нет уже были високосные года и часовые пояса.
Зачем добавлять ещё секунды? Можно подождите, пока время не уйдёт на час и смените часовой пояс. И от 29 февраля никто не предлагал отказываться.
Dim0v
Они тоже "уже были". Их никто не предлагает добавлять снова. Они уже добавлены.
В начале ветки речь шла в том числе и об этом:
https://habr.com/ru/post/452584/#comment_20174850
geher
Традиция, однако.
Человеку хочется, чтобы весеннее равноденствие наступало в конце марта, чтобы полдень был всегда примерно в одно время суток, чтобы в январе всегда была зима (или лето, если в южном полушарии), чтобы пасха наступала примерно в одном сезоне и не убежала на лето и т.п.
Туда же семидневная неделя, из-за которой год не содержит целого числа недель, пляшущие длины месяцев, из-за которых первое полугодие короче второго, праздники, неравномерно распределенные по году, и прочие "радости" планирования и отчетности.
Кое-кто, кстати, дни к году раз в четыре года (на самом деле не каждые четыре года, но это уже тонкости и не у всех), кстати, не прибавляет, и год с вращением Земли вокруг Солнца не синхронизирует. Но им все равно приходится добавлять к году дни для синхронизации с Луной. А другие не мелочатся, и добавляют к году для синхронизации не дни, а целые месяцы.
Подстройка календарей как раз и обеспечивает их точную (насколько возможно без полной потери удобства пользования) синхронизацию "с процессами из природы/космоса": вращение Земли вокруг Солнца (год), вращение Солнца вокруг Земли (в системе отсчета, зафиксированной относительно Земли, день), вращение Луны вокруг Земли (месяц в некоторых календарях, вполне действующих кое-где на нашей планете).
saipr
А было время, когда Юникс развивался в Советском Союзе.
u_235
Не unix, а локальная ветка. Результат какой?
nerudo
Кранты Союзу. Где теперь локальную ветку развивают?
u_235
Там же, где и раньше — глубоко под землей, на ПЭВМ, собранных на серии К1590.
Nova_Logic
нет не было такого времени, хватит спамить.
UNIX развивалась bell labs. Вот клоны развивались где угодно, но не UNIX.
И эти байки про «развивался», тоже выглядят забавно.
Какие UNIX-like системы появились:
1)*BSD — FreeBSD, OpenBSD, NetBSD, частично OS X —все из них широко известны между прочим, и хотя сейчас несколько потеряли популярность, они много чего дали этому миру.
2)Solaris
3)AIX
4)HP/UX
5)QNX
6)Linux
Все выше описанные нашли место и в истории и в настоящем. А вот польза человечеству от «развития unix в СССР» науке не известна.
pavlushk0
По вершкам судите. Примеров не назову, но нельзя исключать что какой то код перетек в популярные юникс клоны от советских программистов.
Jouretz
Вот когда будут факты, тогда будет нельзя исключать. А пока вполне себе можно.
С таким же успехом нельзя исключать что первые версии UNIX получены из исходных кодов автопилота протосовского корабля…
wondersalmon
Но и утверждать такое без доказательств тоже несколько странно
ElegantBoomerang
Хочется отметить, что запись повторения 00:00:00 не совсем корректна, правильнее первую назвать 23:59:60.
vlivyur
Вроде бы оно так и отображается.
Serge3leo
Так и да, по стандартам так, и по ГОСТ ИСО 8601-2001, и по МСЭ-R TF.460-6, см. так же: Википедия: Дополнительная секунда
valis
Да, вроде вполне очевидные вещи, но о которых реально не задумывался (или пока не было повода задуматься)
Hedgehog7
Спасибо за интересный пост с объяснениями — не думала, что UNIXовое время настолько коварно :)
geher
Все написанное в статье не имеет прямого отношения к поведению времени UNIX.
Более того, на изолированном компьютере это время ведет себя именно так, как написано в начале статьи, хотя с оговорками:
А все описанное — это про коррекцию времени. И касается оно любой коррекции времени, будь то корректировка убежавших часов в системе по протоколу NTP или перевод времени "руками" в соответствующих настройках ОС. При этом время в системе вполне может сдвинуться в любую сторону на любое значение.
blind_oracle
А тут смотря какой источник времени используется. В современных ОС их много, в том числе есть монотонные — которые никогда не могут уйти назад. Примеры можно глянуть в петоне: docs.python.org/3/library/time.html#time-clock-id-constants
geher
А это как и зачем?
Часы в компьютере, мягко говоря, не атомные, и редкая вставка високосной секунды по соображениям "изнутри" точности часам компьютера не добавит
Кроме того, в статье написано: "С 1972 года служба IERS (которая управляет этим делом) добавила 27 дополнительных секунд", откуда следует, что решение о вставке (или удалении) секунд принимается не ядром, а организацией IERS.
blind_oracle
Что значит зачем? Чтобы время было синхронизировано. *NIX-системы часто работают с аптаймами в годы и многий софт очень сильно зависит от времени и его точности, разница в секунду это очень много для них.
Понятное дело что ядро не по своему желанию это делает. Какой-либо внешний софт, чаще тот же NTP демон (у которого есть справочник ближайших внесений високосной секунды) использует вызов adjtimex с флагом STA_INS для информирования ядра о том что тогда-то надо бы вставить високосную секунду в системное время.
geher
В таких случаях обычно просто синхронизируют время с внешним источником (NTP, GPS, другой способ), т.е. проводят ту самую коррекцию.
Коррекция же, по данным из внешнего источника, только отложенная.
blind_oracle
NTP в штатном режиме работы не производит коррекцию времени. Совсем. Он подстраивает частоту генератора тактов чтобы время шло с правильной скоростью. Коррекция производится обычно только один раз при старте и дальше идет только подстройка частоты.
А вставка секунды — это интрузивная операция, причем вставляется 60 секунда которой быть не может. Причем нужно учесть все тысячи таймеров, которые крутятся в ядре чтобы они от этого не пострадали. Был баг даже пару лет назад в этой части когда какая-то бяка произошла после вставки високосной секунды.
Поэтому это делается ядром.
Это уже игра слов. С тем же успехом мы могли бы запихнуть в ядро расписание всех коррекций на тысячу лет вперед. Только проще делать это из userspace. По факту NTP просто информирует ядро что по окончанию данного UTC-дня нужно внести 60 секунду и все. Сам он ничего не корректирует.
duger
Нет никакого расписания коррекций ны тысячу лет вперед. Решение принимается дважды в год по результатам астрономических наблюдений Международной Службой Вращения Земли.
Выпаскается т.н. IERS Bulletin C (например, такой) в котором объявляется будет или не будет вставка високосной секунды в следующее возможное окно (31 июня, 31 января)
blind_oracle
Я образно говорил. К тому что нет никакой разницы откуда идет эта информация — внешнего источника или вбитого в ядро расписания.
И «принятие решения» это по сути фикция, замедление вращения планеты идет с постоянной скоростью — можно было вполне составить расписание и производить коррекцию на периодической основе.
Там скорее разные геополитические факторы учитываются еще или что-то в таком духе, лень изучать.
maxxant
> Был баг даже пару лет назад в этой части когда какая-то бяка произошла после вставки високосной секунды.
уточню, в 12-ом году:
bugs.mysql.com/bug.php?id=65778
habr.com/ru/post/146863
ToSHiC
Важный момент, который вы, кажется, не уловили: unixtime — это не эквивалент UTC, а вполне себе отдельная таймзона, у которой свои свойства. Наличие високосных секунд — это свойство таймзоны UTC, которое принципиально отсутствует в unixtime. Отсюда все эти пляски с подкручиванием unixtime назад.
yleo
Странная статья, автор (наверное, всё-таки) хотел внести ясность, а получилось "как всегда" — примерно FUD.
В актуальных Unix-ах время считается в секундах прошедших с точки отсчета "Epoch", за которую принято время 1970-01-01 00:00:00 +0000 по UTC. Это то время, с которым встречается большинство программистов — возвращаемое функцией time(). Никакие високосные секунды не должны на него действовать — ибо (в идеале) это количество "атомных" секунд прошедших с точки отчета (Epoch).
Високосные секунды и таймзоны, связанные с ними "странности", будут иметь место когда мы захотим преобразовать "машинное" Unix-время в "человеческое" (aka broken-down time, см
man localtime
) в некой таймзоне. Тут всё достаточно просто и прозрачно, если разобраться (как-то пришлось). Тем не менее, важно не забывать что таймзоны не константны, а время неизбежно корректируется.При этом стоит отметить, что получаемое программистом Unix-время время на конкретной машине может быть очень неточным. Потом ято:
man clock_gettime
.;Serge3leo
Как бы, с одной стороны, да, задумывали количество «TAI секунд» («атомных») прошедших с точки отчета (Epoch). Но как бы, с другой стороны, нет, т.к. сложившаяся практика поддержания баз временных зон не содержит дополнительных секунд по умолчанию, ну а NTP или иные способы задания времени, синхронизирует по текущему UTC в момент синхронизации.
Поэтому, у большинства актуальных macOS/Linux/AIX/Solaris/BSD/… не количество атомных секунд с эпохи, а количество «UTC секунд» с эпохи (без дополнительных секунд).
yleo
https://sourceware.org/git/?p=glibc.git;a=blob;f=timezone/leapseconds;hb=HEAD
С другой стороны, соглашусь что ради совместимости со старыми Unix-ами можно скомпилировать определение таймзон без високосных секунд. В результате, вместо "60" в секундах видеть NTP-дрейф, leap-вставку ядом (два раза "59") и т.д.
Serge3leo
Хм. Это часть «как бы да», а часть «как бы нет» можете взглянуть на своей системе.
P.S. Только немного наоборот, для поддержки дополнительных секунд (по МСЭ/ГОСТ это основное название) можно скомпилировать зоны и таким образом. Но, насколько мне известно, по-умолчанию, почти все системы придерживаются POSIX интерпретации (вполне себе современный POSIX их не признаёт), т.е. без поддержки дополнительных секунд.
EndUser
www.youtube.com/watch?v=796VtspzH0I
tonny_bennet
Интересные обсуждения выше про астрономическое и атомное время привели к одному умственному (а может и нет) эксперименту:
Давайте, к примеру, уничтожим все часы и календари на планете и оставим только одни эталонные. Спрячем их. Как быстро и с какой точностью по сравнению с эталонными часами можно будет узнать «текущее время» по любым доступным астрономическим наблюдениям и экспериментам? Как вы думаете?
Serge3leo
Насколько мне известно, все современные «эталонные часы» отсчитывают время от некоторой эпохи.
В постановке эксперимента не ясно, желаете ли Вы «спрятать», и эпоху, и часы, тогда ответ однозначный, отрицательный. Либо же, Вы желаете спрятать только часы, а эпоху оставить, тогда не ясно в какой форме Вы желаете оставить эту эпоху.
P.S.
Смысл эксперимента, конечно, сомнительный. К примеру, эпоха входит в кучу таблиц (полиномов) по движению Луны, планет, спутников, вращению Земли, и т.п., а так же данных по переменным звёздам, пульсарам, квазарам и т.п. Вы их тоже прячете или нет? Если нет, то ответ тоже однозначный, но положительный — очень быстро и очень точно.
helgevans
Все, что использует более точное наведение, чем «кручу на глаз», требует часы для расчетов направления. Незадача.
Tarakanator
С точность, превосходящую эталонные часы. По пульсарам. Т.к. их много, то комбинация задержек между сигналами будет уникальной на долгом протяжении времени.
Если и будет повторятся, то примерное время можно будет посмотреть по взаимному расположению тел солнечной системы, а точное опять-же по пульсарам.
Carburn
Какие еще полсекунды, если время Unix это целочисленное число?
metalim
Вроде ж пробегала статья про пульсары (ага, быстро вращающиеся нейтронные звёзды, за много световых лет от нас), точность которых превышает точность атомных часов, т.к. атомные часы могут дрейфовать в долгосроке.
blind_oracle
Пульсары на два порядка менее точны чем современные атомные часы: уход в 1/10^17 против 1/10^15 у пульсаров.
Tarakanator
Возможно, моя информация устарела, но у пульсаров точность как минимум БЫЛА выше, чем у атомных часов.
blind_oracle
Там наверное нужно учитывать на каком временном промежутке измеряется стабильность.
(с) www.technologyreview.com/s/418326/where-is-the-best-clock-in-the-universeЕсли брать популярное изложение, то вот тут пишут:
Ну и вообще по логике атомные эффекты должны быть более стабильны чем нейтронная звезда, которая теряет энергию постоянно и замедляется.
Tarakanator
Вспоминаю историю, когда из США к нам приехали астрономы со своими часами. Заселились в гостиницу, воткнули в розетку и ушли.
Уборщица выдернула, аккумулятор разрядился, и астрономы поехали обратно за новым стандартом времени.
Атомные эффекты может и стабильнее, а вот часы-совсем не факт на длительных промежутках времени. А скорость замедление пульсаров и прогнозировать можно.
blind_oracle
Ну, как видно «наземные» часы имеют восходящий тренд точности, а пульсары — скорее нисходящий. Вполне возможно что в будущем точностью атомных часов будет улучшена (в цитате выше приводят тренд «на 1 порядок в 10 лет»).
Ну и использовать пульсары на практике, наверное, не очень удобно, даже если бы они были гораздо точнее.
Tarakanator
В вашей же цитате указано, что точность пульсаров тоже увеличивается. Просто медленнее.
По поводу удобства смотря для чего. Астрономы очень радовались, когда открыли 2 пульсара в одной системе. Получается есть двое точных часов в одной системе и можно проверять ОТО.
Пульсары удобны тем, что за обозримый период с ними ничего не случится. Не будет уборщицы, которая выдернет розетку.
От атомных часов нужно ещё получить сигнал с постоянной задержкой(если время вам нужно не рядом с часами). С пульсарами мне кажется всё несколько проще.
semen-pro
Unix time определено в промежутке между 13 декабря 1901 года, 20:45:52 и 19 января 2038 года в 03:14:08. Это 2^31 секунд. После этого переменная переполнится и круг замкнется.
sumanai
Unix time не привязано к 32 битам, и во многих местах уже перешли на 64, которые дают диапазон больше возраста вселенной.