Чому час Unix починається з 1970-01-01?


Відповіді:


28

Я б не знав відповіді, за винятком google був для мене:

З Тут (потрібно безкоштовна підписка):

Linux дотримується традиції, встановленої Unix, рахувати час в секундах з моменту свого офіційного "дня народження", який називається "епоха" в обчислювальних термінах - це 1 січня 1970 року.

Більш повне пояснення можна знайти в цій статті Wired News . Він пояснює, що ранні інженери Unix вибрали цю дату довільно, оскільки їм потрібно було встановити єдину дату початку часу, а Новий рік, 1970 рік, здався найбільш зручним.


5

Unix не народився в 1970 році.

Епоха Unix - опівночі 1 січня 1970 р . Важливо пам’ятати, що це не «день народження» Unix - грубі версії операційної системи були приблизно в 1960-х. Натомість дата була запрограмована в систему десь на початку 70-х лише тому, що це було зручно робити, за словами Денніса Річі, одного з інженерів, який працював над Unix в Bell Labs на своєму заснуванні.


Зручний тоді, незручний для розробників у всьому світі.
Кріс Халкроу

3
@ChrisHalcrow: що б ти вибрав як час 0, якби ти був dmr? І як вибір незручний для розробників? Незручність полягає в тому, що вимірювання часу в "людських" умовах (роки, місяці, дні, години / хвилини / секунди, часові пояси, літній час) є складним, а не тому, що було обрано деякий (довільний) $ t = 0 $ момент.
NickD

@NickD, хороший підказ для пояснень і хорошого моменту! Я хотів би вибрати 00:00:00 СЕ 0, проте, як я впевнений, це полегшило б обчислення. Поясніть, будь ласка, що таке 'dmr'? Також, як не дивно, той факт, що ОП вимагає пояснення, чому цю дату було обрано, свідчить про те, що вона суттєво заплутана для того, щоб хтось зрозумів використання 01.0170 як опорну дату!
Кріс Халкроу

2
@ChrisHalcrow: dmr = Денніс Річі. Чи обчислювали ви кількість секунд від вибраного походження до сьогодні? Скільки бітів потрібно? PDP-11 мав 16-бітні регістри та слова, але це дозволило згрупувати два регістри та два слова, щоб зробити 32-бітні регістри та подвійні слова для деяких операцій. Це дає вам +/- 68 років від 0 разів (або +136 років, якщо ваш час не підписано - але dmr вибрав підписаний). Його вибір може бути трохи містифікуючим при першому його побаченні, але це досить очевидне рішення з огляду на вищесказане ...
NickD

1
@NickD - чудове пояснення! Це має бути частиною прийнятої відповіді - чому б не перенести свій коментар туди, і ми можемо видалити наш звідси?
Кріс Халкроу

1

Мені подобається питання :-)

Дозвольте спробувати відповісти на це (звичайно, джерело: Інтернет)

Час Unix представлений 32-бітовим цілим числом (цілим числом), яке може бути позитивним чи негативним (підписано). Unix був спочатку розроблений у 60-х та 70-х роках, тому "початок" Unix Time був встановлений на 1 січня 1970 року о півночі GMT (середній час за Грінвічем) - цій даті / часу було призначено значення для Unix Time 0. Це те, що відомо як епоха Unix.

Ціле число з 32-бітним підписом може представляти цілі числа між -2147483648 та 2147483647. Оскільки час Unix починається з 0, негативні значення часу Unix повертаються у часі з епохи, а додатні числа йдуть вперед у часі. Це означає, що час Unix охоплює значення значення Unix Time -2147483648 або 20:45:52 GMT 13 грудня 1901 року до значення Unix Time 2147483647 або 3:14:07 GMT 19 січня 2038 року. Ці дати представляють початок, доісторія та кінець Unix Time.

Кінець Unix Time відбудеться 19 січня 2038 р. 03:14:07 GMT. 19 січня 2038 р. 03:14:08 GMT усі комп'ютери, які все ще використовують 32-бітний час Unix, переповняться. Це відомо як "Проблема 2038 року". Деякі вважають, що це буде більш значущою проблемою, ніж "проблема 2000 року". Виправлення проблеми 2038 року полягає в збереженні Unix Time в 64-бітовому цілому. Це вже ведеться в більшості 64-бітних операційних систем, але багато систем може не оновлюватися до 2038 року.


5
Лише один параграф цього питання насправді стосується цього питання, і це дещо неточно (епоха спочатку була в 1971 році; вона була перенесена пізніше)
Майкл Мрозек

1
Також дивіться en.wikipedia.org/wiki/Unix_time
Nikhil Mulley

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

@Nikhil Я все ще не розумію, чому 1970 рік, тільки тому, що Unix був розроблений у той час? Чому б не 1960? чи різний місяць різний день?
Тамплієр

@Nikhil чи це насправді не має значення? Тільки перший місяць перший день виглядає краще, і це було зроблено в 1971 році, щоб 1970 рік також виглядав би краще?
Тамплієр
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.