it-roy-ru.com

Почему 01.01.1970 "время эпохи"?

Почему

1 января 1970 года 00:00:00

считается Время эпохи?

432
rahul

Ранние версии Unix измеряли системное время с интервалом 1/60 с. Это означало, что 32-разрядное целое число без знака может представлять промежуток времени менее 829 дней. По этой причине время, представленное числом 0 (называемое Epoch ), должно было быть установлено в самом недавнем прошлом. Как это было в начале 1970-х годов, эпоха была установлена ​​в 1971-1-1.

Позже системное время было изменено с приращением каждую секунду, что увеличило промежуток времени, который может быть представлен 32-разрядным целым числом без знака, примерно до 136 лет. Поскольку больше не было так важно выжимать каждую секунду из прилавка, Эпоха была округлена до ближайшего десятилетия, таким образом становясь 1970-1-1. Надо полагать, что это считалось немного более аккуратным, чем 1971-1-1.

Обратите внимание, что 32-разрядное целое число со знаком , использующее 1970-1-1 в качестве эпохи, может представлять даты до 2038-1-19 , в какую дату он будет оканчиваться до 1901-12-13.

402
Matt Howells

История .

Самые ранние версии времени Unix имели приращение 32-разрядного целого числа со скоростью 60 Гц, что было частотой системных часов на оборудовании ранних систем Unix. Значение 60 Гц все еще появляется в некоторых программных интерфейсах в результате. Эпоха также отличалась от текущей стоимости. В первом издании Руководства программиста Unix от 3 ноября 1971 года время Unix определяется как "время с 00:00:00, 1 января". 1971, измеряется в шестидесятых секундах ".

48
Stu Thompson

http://en.wikipedia.org/wiki/Unix_time#History немного объясняет происхождение времени Unix и выбранной эпохи. Определение времени Unix и даты Epoch прошло через несколько изменений, прежде чем стабилизировалось на том, что есть сейчас.

Но это не говорит о том, почему именно 01.01.1970 был выбран в конце.

Известные выдержки из страницы Википедии:

В первом издании Руководства программиста Unix от 3 ноября 1971 г. время Unix определяется как "время с 00:00:00, 1 января, 1971 , измеряется в шестидесятых секундах ".

Из-за [] ограниченного диапазона, Эпоха была переопределена более одного раза , прежде чем частота была изменена на 1 Гц, и Эпоха была установлена ​​на свое настоящее значение.

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

8
Dawie Strauss

Эпоха справочной даты

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

Много эпох в использовании

Почему 1 января 1970 года 00:00:00 считается временем эпохи?

Нет, не эпоха , и эпоха . Существует много эпох .

Этот выбор Epoch является произвольным .

Основные компьютерные системы и библиотеки используют по крайней мере пара дюжин различных эпох . Одна из самых популярных эпох известна как nix Time , используя упомянутый вами момент UTC 1970 года.

Несмотря на популярность, Unix Time 1970 года не может быть наиболее распространенным. Кроме того, наиболее распространенными будут 0 января 1900 года для бесчисленных электронных таблиц Microsoft Excel и Lotus 1-2-3 или 1 января 2001 года, используемые каркасом Apple Cocoa на более чем миллиарде машин iOS/macOS по всему миру в бесчисленных приложениях. Или, может быть, 6 января 1980 года используется GPS устройствами?

Многие детали

Различные системы используют разную степень детализации при подсчете времени.

Даже так называемое "Unix Time" варьируется, при этом некоторые системы считают целые секунды , а некоторые - миллисекунды . Многие базы данных, такие как Postgres, используют микросекунды . Некоторые, такие как современная среда Java.time в Java 8 и более поздних версиях, используют наносекунды . Некоторые используют еще другие детали.

ISO 8601

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

Стандарт ISO 8601 предоставляет обширный набор практичных, хорошо разработанных форматов для выражения значений даты и времени в виде текста. Эти форматы легко разбираются на машине, а также легко читаются людьми в разных культурах.

Они включают:

1
Basil Bourque