Почему
1 января 1970 года 00:00:00
считать время эпохи ?
Почему
1 января 1970 года 00:00:00
считать время эпохи ?
Ответы:
Ранние версии Unix измеряли системное время с интервалом 1/60 с. Это означало, что 32-разрядное целое число без знака может представлять промежуток времени менее 829 дней. По этой причине время, представленное числом 0
(называемое эпохой ), должно было быть установлено в самом недавнем прошлом. Как это было в начале 1970-х годов, эпоха была установлена в 1971-1-1.
Позже системное время было изменено с приращением каждую секунду, что увеличило промежуток времени, который может быть представлен 32-разрядным целым числом без знака, примерно до 136 лет. Поскольку больше не было так важно выжимать каждую секунду из прилавка, эпоха была округлена до ближайшего десятилетия, таким образом становясь 1970-1-1. Надо полагать, что это считалось немного аккуратнее, чем 1971-1-1.
Обратите внимание , что 32-разрядное подписал целое , используя 1970-1-1 в качестве своей эпохи может представлять даты до 2038-1-19 , на какую дату он будет обернуть вокруг 1901-12-13.
История .
Самые ранние версии времени Unix имели приращение 32-разрядного целого числа со скоростью 60 Гц, что было частотой системных часов на оборудовании ранних систем Unix. Значение 60 Гц все еще появляется в некоторых программных интерфейсах в результате. Эпоха также отличалась от текущей стоимости. В первом издании Руководства программиста Unix от 3 ноября 1971 года время Unix определяется как «время с 00:00:00, 1 января 1971 года, измеренное в шестидесятых секундах секунды».
http://en.wikipedia.org/wiki/Unix_time#History немного объясняет происхождение времени Unix и выбранную эпоху. Определение времени Unix и даты эпохи претерпело несколько изменений, прежде чем стабилизировалось на том, что есть сейчас.
Но это не говорит, почему именно 01.01.1970 был выбран в конце.
Известные выдержки из страницы Википедии:
В первом издании Руководства программиста Unix от 3 ноября 1971 года время Unix определяется как «время с 00:00:00, 1 января 1971 года , измеренное в шестидесятых секундах секунды».
Из-за ограниченного диапазона, эпоха была переопределена более одного раза , прежде чем частота была изменена на 1 Гц, и для эпохи было установлено ее текущее значение.
Несколько более поздних проблем, включая сложность настоящего определения, являются следствием того, что время Unix было определено постепенно с помощью использования, а не полностью определено для начала.
Справочник эпохи дата является точкой на временной шкале , из которых мы отсчет времени. Моменты до этой точки считаются с отрицательным числом, моменты после - с положительным числом.
Почему 1 января 1970 года 00:00:00 считается временем эпохи?
Нет, не эпоха, эпоха. Есть много эпох в использовании .
Этот выбор эпохи является произвольным .
Основные компьютерные системы и библиотеки используют любую из нескольких дюжин различных эпох . Одна из самых популярных эпох, известная как Unix 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 предоставляет обширный набор практичных, хорошо разработанных форматов для выражения значений даты и времени в виде текста. Эти форматы легко разбираются на машине, а также легко читаются людьми в разных культурах.
К ним относятся:
2019-01-23
2019-01-23T12:34:56.123456Z
2019-01-23T18:04:56.123456+05:30
2019-234
Краткий ответ: почему бы и нет?
Более длинный ответ: само время на самом деле не имеет значения, если каждый, кто его использует, согласен с его ценностью. Поскольку 1/1/70 использовался так долго, его использование сделает ваш код максимально понятным для максимально возможного числа людей.
Нет большой заслуги в выборе произвольной эпохи, просто чтобы быть другим.