Каким по счету является 2017 год по компьютерному времени или в эре unix

Обновлено: 02.07.2024

Unix-время (англ. Unix time, также POSIX-время или Unix epoch или Unix time или Unix timestamp) — система описания моментов во времени, принятая в Unix и других POSIX-совместимых операционных системах. Определяется как количество секунд, прошедших с полуночи (00:00:00 UTC) 1 января 1970 года (четверг); время с этого момента называют «эрой Unix» (англ. Unix Epoch).

Период времени Секунды
1 минута 60 секунд
1 час 3600 секунд
1 день 86400 секунд
1 неделя 604800 секунд
1 месяц (30.44 дней) 2629743 секунд
1 год (365.24 дня) 31556926 секунд

Unix Timestamp (временная метка) – это "зафиксированное" время, конкретная дата, запечатленная в числе c точностью до секунды.

UTC (англ. Coordinated Universal Time) - это Всемирное координированное время, которое "фиксируется" на нулевом меридиане (Лондон), и от которого ведется отсчет географических часовых поясов. Аббревиатура UTC не имеет конкретной расшифровки.

GMT (англ. Greenwich Mean Time) - Среднее время по Гринвичу, или гринвичское время. Соответствует нулевому часовому поясу (UTC 0). — среднее солнечное время меридиана, проходящего через прежнее место расположения Гринвичской королевской обсерватории около Лондона.

Границы Unix времени

В момент времени 00:00:00 UTC 1 января 1970 года (четверг) Unix-время равно нулю. Начиная с этого времени, число возрастает на определённое количество в день. Таким образом, к примеру, 16 сентября 2004 года в 00:00:00, спустя 12677 дней после начала отсчета Unix-времени, время будет представлено числом 12677 × 86400 = 1095292800. Расчеты могут быть также произведены в обратном направлении используя отрицательные числа. К примеру, дата 4 октября 1957 года 00:00:00, а это 4472 дня до начала отсчета представлена в Unix-времени числом −4472 × 86400 = −386380800

В программах для хранения Unix-времени используется целочисленный знаковый тип. 32-битные числа со знаком могут ссылаться на моменты времени от пятницы 13 декабря 1901 года 20:45:52 до вторника 19 января 2038 года 03:14:07 включительно.


Почему в Unix есть собственное понятие времени? Какая эпоха и в чем проблема Y2038?

Время Unix – это средство представления определенной даты и времени, используемое Linux, macOS и многими другими совместимыми системами. Он настолько распространен, что вы, вероятно, используете его, даже не подозревая об этом. Однако, как только вы поймете время Unix, вы заметите его во многих контекстах, а несколько предоставленных нами инструментов, могут помочь вам в работе со временем Unix.

Какова цель Unix Time?

Конечно, говоря современным языком, разница в пространстве не так уж и велика. Но учтите, что Unix возник в конце 1960-х, когда доступное хранилище было намного меньше. Также часто используются временные метки, поэтому их хранилище увеличивается. Например, с каждым файлом связаны три метки времени.

Формат практически невозможно перевести в уме, если вы не гений математики. Но он по-прежнему имеет некоторые преимущества перед более читаемыми альтернативами, такими как среда, 21 октября 2015 г., 07:28:00 по Гринвичу. Вы можете легко и быстро заказать две метки времени Unix. Также обычно быстрее определить разницу между двумя отметками времени. Это особенно верно для дат, близких друг к другу, например, в соседние дни.

Об эпохе

Возможно, вы видели эту дату, когда что-то пошло не так. Это явно ошибка, но она выглядит очень странно, когда она приводит к дате до того времени, когда многие из нас родились! Впрочем, это вполне понятно, если знать о времени Unix. Если какая-либо система пытается отобразить метку времени, которая не имеет никакого значения, она часто преобразуется в 0 и приводит к точной дате эпохи.

Формат данных времени Unix

Собственно говоря, его нет. Исходный тип данных был 32-битным целым числом, и это часто остается так, даже в гораздо более мощных системах.

Этот тип данных позволяет значению хранить в общей сложности 2^32 (2 в 32-ой степени) секунды, что составляет чуть более 136 лет. Это значение обычно подписано, что означает, что оно может быть отрицательным или положительным. Таким образом, обычно это 68 лет по обе стороны от эпохи, то есть с 1902 по 2038 годы.

Конечно, это еще ограниченный период. Но в первую очередь формат временной метки использовался для таких понятий, как модификация файлов. Очень важно было представить время, близкое к настоящему, а не древнюю историю или далекое будущее. Даже для таких приложений, как календари, редко требуется представлять даты более чем на несколько десятилетий в будущем.

Проблема 2038 года

Ошибка 2000 года, одна из худших ошибок программирования в истории, затронула компьютерные системы, которые хранят годы в виде двузначных значений. Когда наступил 2000 год, такие системы относились к нему так, как будто это был 1900 год. В действительности это было не так катастрофично, как предполагалось, главным образом потому, что многие люди заранее потратили много времени и усилий, готовясь к нему.

Если бы вы обратили внимание на предыдущий раздел, вы могли бы заметить аналогичную проблему, которая может повлиять на время Unix. Что ж, у Unix time есть собственная проблема с данными: проблема Y2k38. (Это часто называют проблемой, а не ошибкой; возможно, мы стали более оптимистичными с 2000 года!) Когда время Unix буквально истечет в 2038 году, системы будут рассматривать новые даты как 1902 или 1970.

По крайней мере, эта проблема нас не коснется ровно в полночь под Новый год. Последняя секунда 32-битного времени Unix приходится на 19 марта. В конечном итоге мы, скорее всего, модернизируем большинство систем к 2038 году, или к тому времени они все равно устареют.

Некоторые полезные ресурсы по меткам времени

Time.is представляет еще один, еще более минималистичный вид. Он показывает время в нескольких форматах, включая время Unix. Он включает в себя текущее время в заголовке страницы, что полезно.

Использование Unix Time с инструментами командной строки

В Linux и macOS программа даты является основной утилитой для работы с датой и временем, включая временные метки Unix. Вызывается без каких-либо аргументов, возвращает текущую дату / время в удобочитаемом формате:

Если вам нужна текущая дата / время во времени Unix, используйте аргумент +% s :

Вы можете преобразовать дату, удобочитаемую человеком, в метку времени, используя флаг -d, если ваша версия даты поддерживает его. Большинство версий Linux по умолчанию должны:

Идя в другом направлении, вы можете преобразовать временную метку Unix, используя флаг -r:

Некоторые другие программы используют формат %s для работы со временем Unix. Например, если вы хотите показать дату изменения файла во времени Unix, с версией ls для Linux, вы можете использовать следующее:

Как использовать Unix Time в языках программирования

В PHP есть функция time(), которая возвращает текущую временную метку Unix. Его функция date() принимает метку времени в качестве второго аргумента:

JavaScript подходит к вещам интересным образом. У него есть метод Date.now() для получения количества миллисекунд с эпохи Unix. Конечно, вы можете разделить это на 1000 и округлить результат, чтобы получить эквивалентное время Unix в секундах:

Понимание времени Unix

Unix epoch – калькулятор точного времени онлайн

Общепризнанным международным стандартом времени является UNIX или POSIX-время – особая система исчисления, при которой время хранится и отсчитывается в секундах для более высокой точности. Подобный вариант кодирования используется наравне с известной системой UTC, но по некоторым причинам является более удобным, например, если нужно сравнить даты или просто хранить время – в единой величине это делать удобней. Наш калькулятор точного времени онлайн работает с UNIX, позволяя узнать текущее время и перевести его в обоих направления – бесплатно, быстро, максимально просто.

Зачем использовать калькулятор времени Unix epoch онлайн?

Формат времени UNIX, при котором отсутствуют годы, месяцы, дни, часы, минуты, а отображаются только секунды, на первый взгляд кажется неудобным. Однако точное время в Unix epoch тоже может быть полезным для нескольких целей:

  • программисты, работающие с датами, могут упростить себе жизнь, используя формат UNIX;
  • конвертируя время в Unix epoch, можно договариваться о встрече с друзьями, не боясь, что кто-то посторонний об этом узнает – поиграйте в шпионов;
  • чтобы взаимодействовать с веб-мастерами, операционными системами, другими языками программирования и базами данных;
  • для хранения большого массива дат, чтобы информация не занимала много места.

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

Время Unix epoch – что это такое?

Эпоха Unix epoch открылась 01.01.1970 ровно в полночь – именно от этой даты начался отсчет времени. Один день – это 86 400 или 86 401 секунда, соответственно, формат времени указывает число секунд, прошедшее с даты запуска часов. Unix Timestamp – это конкретное время в заданную дату, например, сегодня, с точностью до 1 секунды.

Unix epoch – компьютерное время, используемое программами. Любопытно, что этот формат недолговечен – для хранения используется 32-битная система, электронные устройства смогут распознавать ее до начала 2038 года, а затем число станет настолько большим, что компьютеры начнут воспринимать время, как отрицательную величину. Выход довольно простой – перейти на 64-битную систему, и запаса секунд хватит на 300 млрд. лет.

Что умеет наш онлайн калькулятор времени Unix epoch?

Мы создали простой и удобный калькулятор времени Unix Timestamp, который будет интересен для каждого пользователя, полезен – разработчикам ПО и веб-мастерам. Наш сервис умеет:

  • считать точное время UNIX в настоящий момент;
  • переводить формат UNIX в человеческую дату;
  • конвертировать секунды в дни, часы, минуты;
  • переводить обычное время в систему Unix epoch.

На странице можно узнать время Unix Timestamp абсолютно бесплатно – мы не требуем регистрации и установки специальных программ. Вся информация представлена онлайн – кратко, содержательно, достоверно, без мешающих баннеров и всплывающих окон. А для перевода времени в другие форматы, используйте конвертер, тоже работающий на нашем сайте.

Вчера Дэнни поинтересовался любопытными фактами о Unix-времени, а я вспомнил, что иногда оно работает совершенно неинтуитивно.

Вот эти три факта кажутся в высшей степени разумными и логичными, не так ли?

  1. Время Unix — это количество секунд с 1 января 1970 года 00:00:00 UTC.
  2. Если подождать ровно одну секунду, то время Unix изменится ровно на одну секунду.
  3. Время Unix никогда не двигается назад.

У всех трёх заблуждений одна причина: високосные секунды. Если вы не знакомы с дополнительными секундами, вот краткая справка:

Время UTC определяется двумя факторами:

    : усреднённые показания сотен атомных часов по всему миру. Мы можем измерить секунду по электромагнитным свойствам атома, и это самое точное измерение времени, известное науке.
    , основанное на вращении Земли вокруг собственной оси. Один полный оборот — одни сутки.

Когда два времени выпадают из синхрона, в UTC добавляется или удаляется секунда, чтобы вернуть синхронизацию. С 1972 года служба IERS (которая управляет этим делом) добавила 27 дополнительных секунд. В результате получилось 27 суток UTC продолжительностью в 86 401 секунду. Теоретически возможно появление суток продолжительностью 86 399 секунд (минус одна). Оба варианта противоречат фундаментальному предположению о Unix-времени.

Время Unix предполагает, что каждый день длится ровно 86 400 секунд (60 × 60 × 24 = 86 400), без всяких дополнительных секунд. Если происходит такой скачок, то время Unix либо перепрыгивает через секунду, либо отсчитывая две секунды за одну. По состоянию на 2019 год в нём отсутствует 27 високосных секунд.

Так что наши заблуждения нужно дополнить следующим образом:

  • Время Unix — это количество секунд с 1 января 1970 00:00:00 UTC минус високосные секунды.
  • Если подождать ровно одну секунду, время Unix изменится ровно на одну секунду, если не была удалена дополнительная секунда.

До сих пор на практике секунды никогда не удалялись (и замедление вращения Земли означает, что это маловероятно), но если бы это когда-либо произошло, это означало бы, что день UTC стал на одну секунду короче. В этом случае последняя секунда UTC (23:59:59) отбрасывается.

В каждых сутках Unix одинаковое количество секунд, поэтому последняя Unix-секунда укороченного дня не будет соответствовать никакому времени UTC. Вот как это выглядит, в интервалах по четверти секунды:


Это уже 27 раз произошло на практике. По окончании суток UTC добавляют дополнительную секунду 23:59:60. В сутках Unix одинаковое количество секунд, поэтому он не может добавить дополнительную секунду — вместо этого приходится повторять метки времени Unix для последней секунды. Вот как это выглядит, в интервалах по четверти секунды:

Читайте также: