Почему 01.01.1970 - «эпохальное время»?

416

Почему

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

рассматривалось время эпохи?

  • 20
    Не уверен, почему кто-то думал, что это субъективно. Время эпохи - это стандартная схема отметок времени.
  • 0
    nb этот вопрос был опубликован @phoenix, я только исправил грамматику.
Показать ещё 5 комментариев
Теги:
time
epoch

5 ответов

373
Лучший ответ

Ранние версии измеренного системного времени 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 годов.

  • 28
    1/60 имеет какое-либо отношение к частоте американской сети?
  • 54
    Это частота одного из генераторов на системных платах, которые использовались в то время. Генератору не нужно было использовать частоту 60 Гц, поскольку он работал на постоянном токе, но, вероятно, было дешево использовать то, что было наиболее распространенным в то время, и тогда телевизоры производились серийно ...
Показать ещё 17 комментариев
49

History.

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

  • 1
    Время эпохи - 1 января 1970 года, а не 1 января 1971 года.
  • 75
    @ Стив: Исторически, он прав, ты не прав. ;-)
8

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

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

Заметные выдержки со страницы Википедии:

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

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

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

0

Справочная дата эпохи

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

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

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

Нет, не эпоха, а эпоха. Есть много эпох в использовании.

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

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

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

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

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

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

ISO 8601

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

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

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

-10

Короткий ответ: Почему бы и нет?

Более длинный ответ: само время не имеет значения, если все, кто его использует, согласны с его значением. Поскольку 1/1/70 используется так долго, использование этого кода сделает ваш код максимально понятным для максимально возможного количества людей.

Нет никакой большой пользы в выборе произвольной эпохи, чтобы быть другим.

  • 1
    Но почему 1970 выбран в качестве года.
  • 37
    Потому что Unix был разработан в 1969 году и впервые выпущен в 1971 году, и поэтому было разумно предположить, что ни одна машина не должна будет представлять системное время раньше, чем 1970-01-01-00: 00: 00.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню