Чому 1.01.1970 р. Є «епохальним часом»?


455

Чому це

1 січня 1970 р. 00:00:00

вважали епоху часу ?


21
Не впевнений, чому хтось вважав це суб’єктивним. Час "епохи" - це стандартна схема відмітки часу.
СтурбованоOfTunbridgeWells

5
Сьогодні це було 380 000 годин тому
mplungjan

21
Ми повинні почати рахувати час з цієї дати, тому ми зараз на 44 році.
Леонардо Раель,

3
Сьогодні прямо зараз це 1499969999! Його всього ок. 8 годин їхати!
Доктор Беко

1
@LeonardoRaele Так! то, наприклад, Друга світова війна розпочалася 31 року BE!
Сіаваш Мортазаві

Відповіді:


417

Ранні версії системи 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.


30
1/60 має щось спільне з частотою американської енергетичної мережі?
xtofl

55
Це частота одного з генераторів на системних платах, які використовувались у той час. Не було необхідності для генератора 60 ГГц, оскільки він працював на постійному струмі, але, мабуть, дешево було використовувати те, що найчастіше було в той час, а телевізори тоді масово вироблялися ...
Метт Хоуеллз

18
Насправді, на той час, для комп'ютерних годин, а також RTC були дуже часто синхронізовані з американською мережевою формою хвилі, оскільки це було (є?) Дуже надійним. Він був помножений на отримання тактового процесора і ділився, щоб отримати секунди для RTC.
Алексіос

12
@mafioso: Правильно, я встановлю нагадування на своєму ноутбуці на 2038 рік ... 1901-12-13.

18
@JediKnight Це міркування, що ґрунтується на моєму власному досвіді розробника: зміна стандарту потребує часу, і якщо ваша зміна не сприймає, тоді ви закінчуєте конкуруючі стандарти . Справжнє рішення проблеми епохи - це 64-бітні цілі числа, не переміщуючи епоху вперед.
Джейк

51

Історія .

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


1
Час епохи - 1 січня 1970 року, а не 1 січня 1971 р.
Стів Харрісон

10

http://en.wikipedia.org/wiki/Unix_time#History трохи пояснює джерела часу Unix та обраної епохи. Визначення часу Unix та дати епохи пройшло через кілька змін, перш ніж стабілізуватися на тому, що є зараз.

Але не сказано, чому саме в кінцевому підсумку було обрано 1/1/1970.

Визначні уривки зі сторінки Вікіпедії:

Перше видання Unix Керівництво програміста від 3 листопада 1971 року визначає час Unix , як «час з 00:00:00 1 січня, 1971 , вимірюваний в шістдесятих роках секунди».

Через [обмежений діапазон] епоху переосмислювали не один раз , перш ніж швидкість була змінена на 1 Гц і епоха була встановлена ​​на її теперішнє значення.

Кілька пізніших проблем, включаючи складність цього визначення, є наслідком того, що час Unix був визначений поступово шляхом використання, а не повністю визначеного для початку.


6

Епохальна дата

Довідник епохи дата є точкою на часовій шкалі , з яких ми відлік часу. Моменти до цього моменту рахуються з від’ємним числом, а моменти після цього - додатним числом.

Багато епох у використанні

Чому 1 січня 1970 00:00:00 вважається епохальним часом?

Ні, не епоха, епоха. У вжитку багато епох .

Цей вибір епохи довільний .

Основні комп'ютерні системи та бібліотеки використовують будь-яку, щонайменше, пару десятків різних епох . Однією з найпопулярніших епох є загальновідомий як Unix Time , використовуючи згаданий вами момент 1970 UTC.

У той час як популярні, Unix Time 1 970 - й не може бути найбільш поширеним. Також найпоширенішими будуть 0 січня 1900 року для незліченних електронних таблиць Microsoft Excel & Lotus 1-2-3, або 1 січня 2001 року, які використовували Apple Cocoa Framework у понад мільярд iOS / macOS по всьому світу в незліченних додатках. Чи, можливо, 6 січня 1980 року використовуються GPS- пристрої?

Багато деталей

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

Навіть так званий "час Unix" змінюється, деякі системи рахують цілі секунди, а деякі рахують мілісекунди . Багато баз даних, наприклад Postgres, використовують мікросекунди . Деякі, наприклад сучасний фреймворк java.time в Java 8 і новіших, використовують наносекунди . Деякі використовують інші деталі.

ISO 8601

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

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

До них належать:


-10

Коротка відповідь: Чому ні?

Більш довга відповідь: Сам час насправді не має значення, доки всі, хто його використовує, погоджуються на його значення. Оскільки 1/1/70 використовується так довго, використання його зробить код максимально зрозумілим для якомога більшої кількості людей.

Немає великої заслуги у виборі довільної епохи, щоб бути лише іншим.


37
Оскільки Unix був розроблений у 1969 році та вперше випущений у 1971 році, і тому було обґрунтовано припустити, що жодна машина не повинна представляти системний час раніше 1970-01-01-00: 00: 00.
Йорг W Міттаг

3
Як розробник історичних імітаційних ігор, здається, дуже нерозумно, що дизайнери деяких часових об'єктів, як правило, припускають, що всі програми захочуть представляти дати в майбутньому або недавньому минулому. Звичайно, ми можемо запрограмувати власні уявлення або працювати з коригуючим фактором, але все ж.
Дронз

8
Ця ж епоха перед епохою стосується "практичних" неігрових застосувань, таких як бізнес-таблиці, презентація наукових даних, інтерфейси машини часу тощо.
Lenoxus

7
@Dronz Ви повинні врахувати, що це було розроблено для комп’ютера на 72000 доларів із 9 КБ оперативної пам’яті, який використовував транзистори та діоди для логічних воріт як ЦП (без чіпів на той час!). Тож не було "дурним" робити найосновніше, що працювало.
Каміло Мартін

2
ОП є правильним на метарівні, схеми, які ми розробляємо протягом часу, завжди були досить довільними. Кількість днів у році, кількість днів у місяці, році "0", а правила щодо високосного року - ... божевільні. Кожна система - це лише низка шалених компромісів, оскільки це було найкраще, що вони могли зробити з наявними технологіями, і працювали досить добре для їх негайного використання. Що стосується всіх інженерних проектів
:)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.