Что такое 2017 год в компьютерное время или в эпоху Unix
Обновлено: 21.11.2024
Международный стандарт ISO 8601 определяет числовое представление даты и времени. Эта стандартная нотация помогает избежать путаницы в международном общении, вызванной множеством различных национальных нотаций, и повышает мобильность компьютерных пользовательских интерфейсов. Кроме того, эти форматы имеют несколько важных преимуществ для использования на компьютере по сравнению с другими традиционными обозначениями даты и времени. Описанное здесь обозначение времени уже является стандартом де-факто почти во всех странах, а обозначение даты становится все более популярным.
Особенно с ISO 8601 должны быть знакомы авторы веб-страниц и инженеры-программисты, разрабатывающие пользовательские интерфейсы, форматы файлов и протоколы связи.
Международное стандартное обозначение даты
где ГГГГ – год по обычному григорианскому календарю, ММ – месяц в году между 01 (январь) и 12 (декабрь), а ДД – день месяца между 01 и 31.
Например, четвертый день февраля 1995 года записывается в стандартной записи как
Другие часто используемые обозначения, например. 04.02.95, 02.04.95, 02.04.95, 04.02.1995, 04 февраля 1995, 4 февраля 1995 и многие другие. Особенно опасны первые два примера, потому что, поскольку оба используются довольно часто в США и Великобритании и оба не могут быть различены, неясно, означает ли 04.02.95 02.04.95 или 04.02.1995. . Обозначение даты 2/4/5 имеет по крайней мере шесть разумных интерпретаций (при условии, что только двадцатый и двадцать первый века являются разумными кандидатами в нашу жизнь).
Преимущества стандартной записи даты ISO 8601 по сравнению с другими широко используемыми вариантами:
- легко читается и записывается программным обеспечением (не требуются «JAN», «FEB», таблица .)
- легко сравнивать и сортировать с помощью простого сравнения строк
- не зависит от языка
- не путать с другими популярными обозначениями даты
- соответствие общепринятой 24-часовой системе записи времени, в которой более крупные единицы (часы) также записываются перед более мелкими (минуты и секунды)
- строки, содержащие дату, за которой следует время, также легко сравнивать и сортировать (например, написать «1995-02-04 22:45:00»)
- обозначение короткое и имеет постоянную длину, что упрощает ввод данных с клавиатуры и компоновку таблицы
- идентичен китайскому обозначению даты, поэтому крупнейшая культурная группа (>25%) на этой планете уже знакома с ним :-)
- обозначения даты с порядком «год, месяц, день», кроме того, уже широко используются, например. в Японии, Корее, Венгрии, Швеции, Финляндии, Дании и некоторых других странах и в США уже привыкли как минимум к порядку "месяц-день".
- 4-значное представление года позволяет избежать проблем с переполнением после 2099-12-31
Поскольку даты в любом случае будут выглядеть немного странно, начиная с 01.01.2000 (например, как 01.01.00), было высказано предположение, что 2000 год — это отличная возможность перейти на стандартное обозначение даты.< /p>
ISO 8601 определяет только числовые обозначения и не распространяется на даты и время, когда в представлении используются слова. Он не предназначен для замены словесных обозначений даты, зависящих от языка, таких как «24. Декабрь 2001 г.» (немецкий) или «4 февраля 1995 г.» (англ. США). Однако следует использовать ISO 8601 для замены таких обозначений, как «04.02.95» и «9:30 вечера».
Помимо рекомендуемой основной стандартной записи ГГГГ-ММ-ДД, ISO 8601 также определяет ряд альтернативных форматов для использования в приложениях с особыми требованиями. Все эти альтернативы можно легко и автоматически отличить друг от друга:
Дефисы можно опустить, если компактность представления важнее удобочитаемости, например, как в
Если интересует только месяц или даже только год:
1995-02 или 1995
В коммерческих и промышленных приложениях (сроки поставки, производственные планы и т. д.), особенно в Европе, часто требуется указывать неделю в году. Неделя 01 года — это, по определению, первая неделя с четвергом в этом году, что эквивалентно неделе, содержащей четвертый день января. Другими словами, первая неделя нового года — это неделя, на которую приходится большинство дней в новом году. Неделя 01 также может содержать дни из предыдущего года, а неделя перед неделей 01 года является последней неделей (52 или 53) предыдущего года, даже если она содержит дни из нового года. Неделя начинается с понедельника (день 1) и заканчивается воскресеньем (день 7). Например, первая неделя 1997 года длится с 1996-12-30 по 1997-01-05 и может быть записана в стандартной записи как
1997-W01 или 1997W01
Обозначение недели также может быть дополнено числом, обозначающим день недели.Например, день 1996-12-31, то есть вторник (2-й день) первой недели 1997 года, также можно записать как
1997-W01-2 или 1997W012
для таких приложений, как промышленное планирование, где многие вещи, такие как ротация смен, организованы по неделям, и знать номер недели и день недели удобнее, чем знать день месяца.
Сокращенная версия года и номера недели, например
иногда используется в качестве компактного кода, напечатанного на продукте и указывающего, когда он был изготовлен.
Примечание. В стандарте ISO не указывается возможный диапазон номеров недель, но это можно легко вывести из определения. Возможные номера недель ISO находятся в диапазоне от 01 до 53. В году всегда есть неделя 52. (Есть одно историческое исключение: год, в котором был введен григорианский календарь, имел менее 365 дней и менее 52 недель.)
Доказательство: согласно определению, первая неделя года – это W01, и, следовательно, дни перед неделей W01 относятся к предыдущему году, поэтому не существует недели с меньшими числами. Учитывая максимально возможный номер недели, наихудшим случаем является високосный год, такой как 1976, который начинается с четверга, потому что это сохраняет максимально возможное количество дней W01 в предыдущем году, т. е. 3 дня. В этом случае воскресенье W52 года наихудшего случая — это день с номером 4+51*7=361, а 361-366=5 дней W53 все еще принадлежат этому году, что гарантирует, что в наихудшем году день 4 (четверг ) W53 еще нет в следующем году, поэтому возможен недельный номер 53. Например, 53 недели наихудшего 1976 года начались с 1975-12-29 = 1976-W01-1 и закончились 1977-01-02 = 1976-W53-7. С другой стороны, учитывая наименьшее число последней недели года, наихудшим случаем является невисокосный год, такой как 1999, который начинается с пятницы, что гарантирует, что первые три дня года принадлежат последней неделе года. предыдущий год. В этом случае воскресенье 52-й недели будет иметь номер дня 3+52*7=367, т. е. только последние 367-365=2 дня W52 переходят в следующий год, и, следовательно, даже такой наихудший год, как 1999 год, в неделю W52, включая дни с 1999-12-27 по 2000-01-02. к.э.д.
И день, и год являются полезными единицами структурирования времени, потому что они описывают положение солнца на небе, влияющее на нашу жизнь. Однако 12 месяцев в году имеют какое-то неясное мистическое происхождение и не имеют сегодня никакой реальной цели, кроме того, что люди привыкли к ним (они даже не описывают текущее положение луны). В некоторых приложениях предпочтительна запись даты, в которой используются только год и день года между 001 и 365 (366 в високосные годы). Стандартное обозначение для этого варианта, представляющего день 1995-02-04 (то есть 035 день 1995 года),
1995-035 или 1995035
Високосными годами считаются годы с дополнительным днем YYYY-02-29, где номер года кратен четырем, за следующим исключением: если год кратен 100, то это только високосный год, если он также кратно 400. Например, 1900 год не был високосным, а 2000 – високосным.
Время суток
Международное стандартное обозначение времени суток
где чч — количество полных часов, прошедших с полуночи (00–24), мм — количество полных минут, прошедших с начала часа (00–59), а сс — количество полные секунды с начала минуты (00-60). Если значение часа равно 24, то значения минут и секунд должны быть равны нулю.
Примечание. Значение 60 для ss может иногда потребоваться во время вставленной дополнительной секунды в атомной шкале времени, такой как всемирное координированное время (UTC). Одна дополнительная секунда 23:59:60 вставляется в шкалу времени UTC каждые несколько лет, как объявляет Международная служба вращения Земли в Париже, чтобы UTC не отклонялся более чем на 0,9 с от менее постоянной астрономической шкалы времени UT1, которая определяется действительным вращением Земли. На практике вы вряд ли увидите часы, показывающие 23:59:60. Большинство синхронизированных часов снова синхронизируются с UTC через некоторое время после того, как произошла дополнительная секунда, или они временно замедляются во время дополнительной секунды, чтобы избежать любых сбоев, которые в противном случае могут быть вызваны отметкой времени вне допустимого диапазона.
Пример времени
которое представляет время за одну секунду до полуночи.
Как и в случае с датой, разделяющие двоеточия также могут быть опущены, как в
и точность можно уменьшить, опустив секунды или обе секунды и минуты, как в
23:59, 2359 или 23
Также можно добавить доли секунды после десятичной точки или запятой, например, время за 5,8 мс до полуночи можно записать как
23:59:59,9942 или 235959,9942
Поскольку каждый день начинается и заканчивается в полночь, два обозначения 00:00 и 24:00 позволяют различать две полночи, которые можно связать с одной датой. Это означает, что следующие два обозначения относятся к одному и тому же моменту времени:
1995-02-04 24:00 = 1995-02-05 00:00
Если требуется однозначное представление времени, обычно предпочтительным обозначением полуночи является 00:00, а не 24:00. Цифровые часы показывают 00:00, а не 24:00.
ISO 8601 не определяет, указывают ли его обозначения момент времени или период времени. Это означает, например, что ISO 8601 не определяет, относится ли 09:00 к точному концу девятого часа дня или к периоду с 09:00 до 09:01 или к чему-то еще. Пользователи стандарта должны каким-то образом согласовать точную интерпретацию обозначения времени, если это вызывает какое-либо беспокойство.
Если дата и время отображаются в одной строке, всегда пишите дату перед временем. Если дата и время хранятся вместе в одном поле данных, то в соответствии с ISO 8601 их следует разделять латинской заглавной буквой T, например 19951231T235959.
Примечание для читателей из США:
- Он длиннее, чем обычная 24-часовая запись.
- Людям требуется несколько больше времени, чтобы сравнить два раза в 12-часовом формате.
- Непонятно, как представлены 00:00, 12:00 и 24:00. Даже энциклопедии и руководства по стилю содержат противоречащие друг другу описания, и обычное быстрое решение, по-видимому, состоит в том, чтобы избегать «12:00/12:00». вместе и напишите «полдень», «полночь» или «00:01/01». вместо этого, хотя слово «полночь» по-прежнему не различает 00:00 и 24:00 (полночь в начале или в конце данного дня).
- Люди часто полагают, что следующий день начинается в момент переполнения с "00:59". до «1:00», что является распространенной проблемой не только тогда, когда люди пытаются запрограммировать таймер видеомагнитофона вскоре после полуночи.
- Его сложно сравнить с операцией сравнения строк.
- Для тех, кто не в курсе, не сразу понятно, было ли время между «12:00 и 12:00». и «1:00/pm» начинается в 00:00 или в 12:00, т. е. английское 12-часовое обозначение труднее понять.
Примечание для читателей из немецкоязычных стран:
Немецкий стандарт DIN 5008, определяющий типографские правила для немецких текстов, написанных на пишущих машинках, был обновлен в 1996-05 гг. Старые немецкие числовые обозначения даты DD.MM.YYYY и DD.MM.YY были заменены обозначениями даты ISO YYYY-MM-DD и YY-MM-DD. Точно так же старые немецкие обозначения времени чч.мм и чч.мм.сс были заменены обозначениями ISO чч:мм и чч:мм:сс. Эти новые обозначения теперь также упоминаются в последнем издании Duden. Немецкое буквенно-цифровое обозначение даты по-прежнему, например, «3. Август 1994 года» или «3. август 1994 г.». В соответствующем австрийском стандарте ранее уже использовались обозначения даты и времени ISO 8601.
ISO 8601 был принят в качестве европейского стандарта EN 28601 и, следовательно, теперь является действующим стандартом во всех странах ЕС, и все конфликтующие национальные стандарты были были соответствующим образом изменены.
Часовой пояс
Без каких-либо дополнительных дополнений предполагается, что дата и время, указанные выше, относятся к некоторому местному часовому поясу. Чтобы указать, что время измеряется во всемирном времени (UTC), вы можете добавить заглавную букву Z ко времени, как в
23:59:59Z или 2359Z
Примечание. Z обозначает «нулевой меридиан», который проходит через Гринвич в Лондоне, а также широко используется в радиосвязи, где произносится как «зулу» (слово, обозначающее Z в международном радиоалфавите). Универсальное время (иногда также называемое «зулусским временем») до 1972 года называлось средним временем по Гринвичу (GMT), однако этот термин больше не должен использоваться. С момента введения международной атомной шкалы времени почти все существующие гражданские часовые пояса теперь привязаны к UTC, что немного отличается от старого и ныне неиспользуемого GMT.]
+чч:мм, +ччмм или +чч
может быть добавлено к местному времени, чтобы указать, что используемый местный часовой пояс составляет чч часов и мм минут впереди UTC. Для часовых поясов к западу от нулевого меридиана, отстающих от UTC, одно из отрицательных смещений
Вместо этого добавляется-чч:мм, -ччмм или -чч
, чтобы указать, что предыдущее местное время отстает от UTC на чч часов и мм минут. Например, центральноевропейское время (CET), которое на час опережает UTC, обозначается добавлением +0100, а стандартное восточное время США/Канады (EST), которое отстает от UTC на пять часов, обозначается добавлением -0500. Таким образом, все следующие три строки указывают на один и тот же момент времени (полдень по Гринвичу):
12:00Z = 13:00+01:00 = 07:00-05:00
Не существует международного стандарта, определяющего буквенные аббревиатуры для гражданских часовых поясов, таких как CET, EST и т. д., а иногда одна и та же аббревиатура используется даже для двух очень разных часовых поясов. Кроме того, политикам нравится изменять правила для гражданских часовых поясов, особенно для перехода на летнее время, каждые пару лет, поэтому единственный действительно надежный способ описания местного часового пояса — указать числовое значение разницы этого местного времени с UTC. Лучше использовать непосредственно UTC в качестве единственного часового пояса, где это возможно, и тогда вам вообще не придется беспокоиться о часовых поясах и переходе на летнее время.
Подробнее о часовых поясах
Пол Эггерт, Артур Олсон и другие ведут базу данных всех текущих и многих исторических изменений часовых поясов и алгоритмов перехода на летнее время. Теперь он доступен в виде базы данных часовых поясов IANA в файлах tzcode* и tzdata*. Большинство реализаций обработки часовых поясов Unix основаны на этом пакете.
Некоторые советы по использованию ISO 8601 в программном обеспечении
Нотация ISO 8601 сегодня является общепринятым форматом представления даты и времени в виде удобочитаемых строк в новых коммуникационных протоколах и форматах файлов с открытым текстом. Несколько стандартов и профилей были созданы на основе ISO 8601, включая RFC 3339 и примечание W3C о форматах даты и времени.
Стандарты C и POSIX определяют для функции strftime() и утилиты date нотацию для определения представления даты и времени. Вот несколько примеров того, как их можно использовать для создания вывода ISO 8601:
строка формата | вывод |
---|---|
%Y-% m-%d | 1999-12-31 |
%Y-%j | 1999-365 | < /tr>
%GW%V-%u | 1999-W52-5 |
%H:%M:%S | 23:59:59 |
Другие ссылки о дате, времени и календарях
Некоторыми другими интересными источниками информации о дате и времени в Интернете являются, например, Глоссарий терминов частоты и времени и часто задаваемые вопросы, предоставленные NIST, коллекция ссылок Yahoo Science:Measurements and Units:Time, сервер военно-морской обсерватории США. , Международная служба вращения Земли (IERS) (только для знатоков времени!), Протокол сетевого времени (NTP), раздел времени и календаря часто задаваемых вопросов USENET sci.astro и часто задаваемые вопросы о календаре.
Это был краткий обзор стандарта ISO 8601, который охватывает только самые полезные обозначения и включает некоторую дополнительную информацию. Полный стандарт дополнительно определяет ряд более экзотических обозначений, в том числе некоторые для периодов времени. Сам стандарт ISO 8601:2004 (3-е издание) можно заказать только в бумажном виде или в виде файла PDF на компакт-диске либо через веб-сайт ISO в Интернете, либо с
Еще одним кратким изложением ISO 8601 является страница Юкки Корпелы, а также другие связанные страницы, перечисленные в Open Directory.
Комитетом, отвечающим за ISO 8601, является ISO TC 154, а редактором второго издания ISO 8601:2000 был Луис Виссер.
Я хочу поблагодарить Эдварда М. Рейнгольда за разработку прекрасных функций календаря GNU Emacs, а также Рича Уэльса, Марка Брейдера, Пола Эггерта и других участников дискуссионных групп USENET comp.std.internat, comp.protocols.time. .ntp и sci.astro за ценные комментарии к этому тексту.
Некоторые сообщения в СМИ:
- Джон Г. Ауэрбах, Wall Street Journal, 1 июня 1999 г., страница A1.
Вас также может заинтересовать веб-страница с международными стандартными форматами бумаги.
Все эти метки времени указаны в секундах. Если вы хотите, чтобы миллисекунды отображались в миллисекундах, добавьте три нуля (000).
Местный часовой пояс зависит от вашего браузера/компьютера.
Последние даты
Временные метки основаны на времени загрузки этой страницы: .
Если вы хотите обновить метки времени, нажмите .
Вы можете увидеть обычную дату, если наведете курсор на отметку времени, или нажмите здесь, чтобы увидеть все даты на экране.
Недавние и предстоящие даты будут использовать местный часовой пояс для перехода на летнее время (13:00 по летнему времени = 13:00 по зимнему времени).
Дата | Эпоха/временная метка Unix | |
---|---|---|
Сейчас | ||
1 час назад | ||
2 часа назад | ||
3 часа назад | tr>||
6 часов назад | ||
12 часов назад | ||
1 день назад (вчера) td> | ||
2 дня назад | ||
3 дня назад | ||
1 неделю назад ( на прошлой неделе) | ||
2 недели назад | ||
3 недели назад | ||
4 недели назад (28 дней) | ||
1 месяц назад (тот же день в прошлом месяце) | ||
2 месяца назад td> | ||
3 месяца назад | ||
6 месяцев назад | ||
9 месяцев назад< /td> | ||
1 год назад (последний год) | ||
2 года назад | ||
3 года назад | ||
5 лет назад | ||
10 лет назад |
Дата | Эпоха/временная метка Unix | |
---|---|---|
Сейчас | ||
Через 1 час | ||
Через 2 часа | ||
Через 3 часа | tr>||
Через 6 часов | ||
Через 12 часов | ||
Через 1 день (завтра) td> | ||
Через 2 дня | ||
Через 3 дня | ||
Через 1 неделю ( на следующей неделе) | ||
Через 2 недели | ||
Через 3 недели | ||
Через 4 недели (28 дней) | ||
Через 1 месяц (в тот же день следующего месяца) | ||
Через 2 месяца | td>||
Через 3 месяца | ||
Через 6 месяцев | ||
Через 9 месяцев< /td> | ||
Через 1 год (следующий год) | ||
Через 2 года | ||
Через 3 года | ||
Через 5 лет | ||
Через 10 лет |
Обычная дата | Временная метка Unix GMT/UTC | Временная метка Unix местное время |
---|---|---|
2021, 1 января | 1609459200 | |
2021, 1 февраля | 1612137600 | |
2021, 1 марта | 1614556800 | |
2021, 1 апреля | < td >1617235200||
2021, 1 мая | 1619827200 | |
2021, 1 июня | 1622505600 | |
2021, 1 июля | 1625097600 | |
2021, 1 августа< /td> | 1627776000 | |
2021, 1 сентября | 1630454400 | |
2021, октябрь 1 | 1633046400 | |
2021, 1 ноября | 1635724800 | |
2021 , 1 декабря | 1638316800 | |
2022, 1 января | 1640995200 | |
2022, 1 февраля | 1643673600 | |
2022, 1 марта | 1646092800 | |
2022, 1 апреля | 1648771200 | |
2022, май 1 | 1651363200 | |
2022, 1 июня | 1654041600 | |
2022 , 1 июля | 1656633600 | |
2022, 1 августа | 1659312000 | |
2022, 1 сентября | 1661990400 | |
2022, 1 октября | 1664582400 | |
2022, 1 ноября | 1667260800 | |
2022, 1 декабря | 1669852800 | 2023, 1 января | 1672531200 |
2023, 1 февраля | 1675209600 | |
2023, 1 марта | 1677628800 | |
2023, 1 апреля | 1680307200 | < /tr>|
2023, 1 мая | 1682899200 | |
2023, 1 июня | 1685577600 | |
2023, 1 июля | 1688169600 | |
2023, 1 августа | 1690848000< /td> | |
2023, 1 сентября | 1693526400 | |
2023, 1 октября | 1696118400 | |
2023, 1 ноября | 1698796800 | |
2 023, 1 декабря | 1701388800 | |
2024, 1 января | 1704067200 | |
1706745600 | ||
2024, 1 марта | 1709251200 | |
2024, 1 апреля | 1711929600 | |
2024, 1 мая | 1714521600 | |
2024, 1 июня | 1717200000 | |
2024, 1 июля | 1719792000 | tr>|
2024, 1 августа | 1722470400 | |
2024, 1 сентября | 1725148800 | |
2024, 1 октября | 1727740800 | |
2024, 1 ноября | 1730419200 td> | |
2024, 1 декабря | 1733011200 |
Список меток времени Unix по годам 1930–2038
Временные метки: 1 января, полночь.
Местный часовой пояс зависит от вашего браузера/компьютера и может быть неправильным (часовые пояса менялись со временем и изменятся в будущем).
d>1944, 1 январяБольшие числа
Обратите внимание, что многие программы/языки не могут работать с такими крайними датами.
Эти метки времени рассчитываются с использованием GMT, но могут быть неточными (високосные секунды и т. д.)
Но если мы переживем это, знатоки Unix и Linux знают, что настоящий конец времени не за горами: 19 января 2038 года, 3:14 утра по всемирному координированному времени. Вот когда 32-битный регистр time_t Unix […] … Вот и первый всадник апокалипсиса time_t наступил на наш мир своими грязными копытами.
Что заменит время Unix?
Буквально говоря, эпоха — это время Unix 0 (полночь 01.01.1970), но «эпоха» часто используется как синоним времени Unix. Некоторые системы хранят даты эпохи в виде 32-разрядного целого числа со знаком, что может вызвать проблемы 19 января 2038 года (известные как проблема 2038 года или Y2038).
Почему проблема с 2038 годом?
Проблема 2038 года вызвана 32-разрядными процессорами и ограничениями 32-разрядных систем, на которых они работают. … По сути, когда 19 марта в 03:14:07 UTC наступит 2038 год, компьютеры, все еще использующие 32-разрядные системы для хранения и обработки даты и времени, не смогут справиться с изменением даты и времени.
Как долго продлится время Unix?
Последнее время с 1 января 1970 года, которое можно сохранить с помощью 32-разрядного целого числа со знаком, — 03:14:07 вторника, 19 января 2038 года (2 31 −1 = 2 147 483 647 секунд после 1 января 1970 года).
Как получить текущую временную метку Unix?
Чтобы найти текущую временную метку unix, используйте параметр %s в команде даты. Параметр %s вычисляет метку времени unix, находя количество секунд между текущей датой и эпохой unix.
Перестанут ли работать компьютеры в 2038 году?
Ошибка Unix Millennium Bug, которую часто называют Y2K 2.0, может привести к поломке современных компьютеров, если не будет обновлена система отсчета времени. Если мы не подготовимся к 2038 году, большинство современных компьютеров перестанут работать.
Использует ли Linux время Unix?
Linux следует традиции, установленной Unix, отсчитывая время в секундах с момента своего официального «рождения» — называемого «эпохой» в компьютерных терминах — 1 января 1970 года.
Какой это формат метки времени?
Автоматический анализ временных меток
Формат метки времени | Пример |
---|---|
yyyy-MM-dd*HH:mm:ss | 2017-07-04*13:23:55 |
гг-мм-дд ЧЧ:мм:сс,ССС ZZZZ | 11-02-11 16:47:35,985 +0000 | гг-мм-дд чч:мм:сс,сс,сс | 10-06-26 02:31:29,573 |
гг-мм-дд чч:мм:сс | 10-04-19 12:00:17 |
Какое максимальное время эпохи?
5 ответов. Теоретически ограничений нет. «Время эпохи» — это просто количество секунд до/после определенного момента времени (1 января 1970 года, полночь по Гринвичу); с достаточно широким числовым типом вы можете описать любое время в этих терминах.
Будут ли 128-битные компьютеры?
Что такое 32-битное целое число?
Целое число, 32 бита: целые числа со знаком в диапазоне от -2 147 483 648 до +2 147 483 647. Целочисленный, 32-битный тип данных используется по умолчанию для большинства числовых тегов, где переменные могут принимать отрицательные или положительные значения. Целое, 32-битное BCD: двоично-десятичное число без знака в диапазоне от 0 до +99999999.
Что такое 32-битное время Unix?
Поскольку временная метка Unix использует 32-битное целое число без знака, у нее есть максимальное время, которое может быть отсчитано до того, как число «превратится» в отрицательное число. Основываясь на текущем времени Unix, время обновления будет 03:14:07 UTC 19 января 2038 года. Это похоже на проблему «2000 года» в 1999 году.
Что означает 32-разрядная версия?
32-бит в компьютерных системах означает количество битов, которое может быть передано или обработано параллельно. Другими словами, 32-битное количество битов, составляющих элемент данных. Для шины данных 32-разрядность означает количество доступных путей, т. е. наличие 32 параллельных путей для передачи данных.
В ранних версиях Unix системное время измерялось с интервалом 1/60 секунды. Это означало, что 32-битное целое число без знака могло представлять только промежуток времени менее 829 дней. По этой причине время, представленное цифрой 0 (называемое эпохой), должно было быть установлено в очень недавнем прошлом. Поскольку это было в начале 1970-х годов, эпоха была установлена на 1-1-1971.
Позже системное время было изменено на увеличение каждую секунду, что увеличило промежуток времени, который может быть представлен 32-битным целым числом без знака, примерно до 136 лет. Поскольку выжимать из счетчика каждую секунду было уже не так важно, эпоха была округлена в меньшую сторону до ближайшего десятилетия, получив таким образом 1970-1-1. Надо полагать, что это считалось немного более аккуратным, чем 1971-1-1.
Это частота одного из генераторов на системных платах, использовавшихся в то время.Генератор не обязательно должен был иметь частоту 60 Гц, поскольку он работал от постоянного тока, но, вероятно, было дешево использовать то, что было наиболее распространенным в то время, а телевизоры тогда производились массово.
На самом деле, в то время компьютерные часы, а также RTC были очень распространены, чтобы синхронизироваться с сигналом сети США, потому что это было (есть?) очень надежно. Оно было умножено, чтобы получить тактовую частоту процессора, и разделено, чтобы получить секунды для RTC.
@JediKnight Это предположение основано на моем собственном опыте разработчика: изменение стандарта требует времени, и если ваше изменение не приживется, вы получите конкурирующие стандарты. Настоящим решением проблемы эпохи являются 64-битные целые числа, не перемещающие эпоху вперед во времени.
Самые ранние версии времени Unix имели 32-битное целое число, увеличивающееся с частотой 60 Гц, что было частотой системных часов на аппаратном обеспечении ранних систем Unix. В результате значение 60 Гц по-прежнему отображается в некоторых программных интерфейсах. Эпоха также отличалась от текущего значения. В первом издании Руководства программиста Unix от 3 ноября 1971 года время Unix определяется как "время с 00:00:00 1 января 1971 года, измеренное в шестидесятых долях секунды".
Но в нем не сказано, почему в итоге было выбрано именно 01.01.1970.
Примечательные выдержки со страницы Википедии:
В первом издании Unix Programmer's Manual от 3 ноября 1971 года время Unix определяется как "время с 00:00:00 1 января 1971 года, измеренное в шестидесятых долях секунды".
Из-за ограниченного диапазона эпоха переопределялась более одного раза, прежде чем частота была изменена на 1 Гц, а эпоха была установлена на ее текущее значение.
Несколько более поздних проблем, включая сложность настоящего определения является результатом того, что время Unix определялось постепенно в процессе использования, а не полностью определялось с самого начала.
Дата отсчета эпохи — это точка на временной шкале, от которой мы отсчитываем время. Моменты до этой точки считаются отрицательными, а моменты после — положительными.
Почему 1 января 1970 года 00:00:00 считается временем эпохи?
Нет, не эпоху, эпоху. Используется много эпох.
Эта эпоха выбрана произвольно.
Основные компьютерные системы и библиотеки используют любую из как минимум пары десятков различных эпох. Одна из самых популярных эпох широко известна как Unix Time, использующая упомянутый вами момент 1970 UTC.
Несмотря на популярность, Unix Time 1970 не может быть наиболее распространенным. Также наиболее распространенным будет 0 января 1900 г. для бесчисленных электронных таблиц Microsoft Excel и Lotus 1-2-3 или 1 января 2001 г., используемое инфраструктурой Apple Cocoa на более чем миллиарде компьютеров iOS / macOS по всему миру в бесчисленных приложениях. Или, возможно, 6 января 1980 года, используемое устройствами GPS?
Разные системы используют разную степень детализации при подсчете времени.
Даже так называемое «время Unix» различается: некоторые системы считают секунды целиком, а некоторые — миллисекунды. Многие базы данных, такие как Postgres, используют микросекунды. Некоторые, такие как современная структура java.time в Java 8 и более поздних версиях, используют наносекунды. Некоторые используют еще и другие детали.
Поскольку существует много различий в использовании ссылки на эпоху и в детализации, обычно лучше избегать передачи моментов в виде отсчета от эпохи. Между неоднозначностью эпохи и детализацией, а также неспособностью людей воспринимать значимые значения (и, следовательно, пропускать ошибочные значения), используйте простой текст вместо чисел.
Стандарт ISO 8601 предоставляет обширный набор удобных и удобных форматов для представления значений даты и времени в виде текста. Эти форматы легко анализируются машиной, а также легко читаются людьми в разных культурах.
Читайте также:
- Как выбрать ноутбук с DNS
- Что такое затмение
- Доступные системные ресурсы компьютера заканчиваются, поэтому новые пользователи не могут войти в систему, что это такое
- Как поставить пробел между числами в Excel
- Как компьютерная графика появилась в фильмах?