Unix timestamp что это
Unix время и Unix Timestamp (MySQL, PHP, JavaScript)
Почему Unix время начинается с 1 января 1970 года
Все дело в том, что Unix время начинает отсчет эпохи Unix, с выпуска первой UNIX системы. Первая система подобного рода была создана в 1969 году, поэтому точкой отсчета времени разработчики приняли дату с 1 января 1970 года в полночь по UTC (Всемирное координированное время).
Давайте разберемсяс тем, для чего нужны Unix время и Unix Timestamp, а также дадим им четкие понятия.
Unix время – это текущее количество секунд прошедших с 1 января 1970 года.
Unix Timestamp – это метка времени, которая представляет собой последовательность символов, отражающих количество секунд, прошедших с 1 января 1970 года.
Попробую привести пример, для разъяснения разницы этих двух понятий.
На время написания мной данного поста, Unix время было равно 1346765877.
Откровенно говоря, особого смысла разделять два понятия, на мой взгляд, нет, но все же полезно иметь представление о том, что из-себя представляет Unix Time, а также полезно понимать, что количество максимально возможных секунд прошедших с 1970 года, имеет предел!
Конец эпохи Unix придёт в 2038 году
Факт: максимальным двоичным числом в 32 битных системах является число 01111111 11111111 11111111 11111111, переведя его в десятичную систему, мы получим число 2147483647.
19 января 2038 года в 03:14:08 настанет момент, когда количество секунд прошедших с начала эры Unix, превысит максимальное, доступное в 32 битной системе, число = 2147483647. При переполнении разряда, произойдет сброс даты.
Проверить эту теорию на наглядном примере очень просто:
Если продолжить добавлять единицу, то мы получим циклическое замыкание.
Именно такое кольцевание дат произойдет с 19 января 2038 года на всех системах использующих 32 битную архитектуру.
На самом деле не стоит печалиться, ведь разработчики вычислительных систем все больше внедряют 64 битные архитектуры в повсеместное использование. Будем верить в то, что они успеют к 2038 году.
Теперь поговорим об использовании unix timestamp в php, mysql и даже в javascript.
Работа с unix timestamp
Очень важным моментом, при работе с unix timestamp в php или mysql, является необходимость четкого понимать плюсы и минусы такого формата даты.
Например, TIMESTAMP не получится использовать для задания исторических событий или событий далекого будущего. Весь набор дат ограничен периодом с 1970 по начало 2038 года. Если задать дату, выходящую за рамки 2038, она будет не правильно интерпретирована 32 битной системой.
Осознав это ограничение, напрашивается логический вопрос: «Зачем нужно заморачиваться с представлением даты в секундах?«
Когда следует использовать Unix Timestamp
Для представления времени в обычной для нас системе его измерения, требуется 8 байт, а для unix timestamp вдвое меньше – 4 байта.
Экономия объема данных, на мой взгляд, основной и неоспоримый плюс в использовании Unix Time.
Кроме того есть ряд полезных нюансов доступных при работе с UNIX timestamp в mysql. А поскольку вся информация должна храниться на сервере баз данных, и он в свою очередь имеет ряд преимуществ, при работе с метками Unix времени, то выбор в сторону unix timestamp можно корректно обосновать следующими положениями.
В MySQL предусмотрен соответствующий тип данных Timestamp для работы с форматом unix-времени, установив который мы сразу получаем полезное преимущество, перед стандартными форматами DATE и DATETIME. Преимущество заключается в том, что выполняя операцию добавления новой записи в таблицу, столбец с этим типом данных заполняется автоматически. А это значит, что мы можем сэкономить не только на объеме данных, но и на процессорном времени веб сервера.
Для подкрепления слова делом поставим такую задачу: при регистрации нового пользователя в системе, нужно заносить дату его добавления в базу данных.
Если тип поля хранящего дату в таблице – DATETIME, то запрос из PHP скрипта будет выглядеть примерно так:
В случае, когда поле date имеет тип TIMESTAMP запрос будет таким:
Unix time конвертер (Конвертер времени Unix онлайн)
Обычная дата(Human readable time) | Секунды |
1 минута | 60 секунд |
1 час | 3600 секунд |
1 день | 86400 секунд |
1 неделя | 604800 секунд |
1 месяц (30.44 дней) | 2629743 секунд |
1 год (365.24 дней) | 31556926 секунд |
Конвертивание эпохи Unix в человекопонятную дату(human readable date)
Unix дата начала и конца года, месяца или дня
Перевод секунд в дни, часы и минуты
Как получить Unix время в.
Конвертирование даты в Unix время в.
Конвертирование Unix времеми в понятную дату(human readable date).
Для чего нужен инструмент «Unixtime конвертер»?
Данный инструмент, в первую очередь, будет полезен веб-мастерам, которые постоянно имеют дело с большими объемами дат или часто в своей работе обращаются к их элементам. С помощью инструмента «Unixtime конвертер» можно легко конвертировать Unix время в понятную для пользователя дату (и наоборот), узнать текущее Unix epoch время, а также получить Unix время в различных языках программирования, СУБД и операционных системах.
Что такое Unix время?
Эра Unix (Unix epoch) началась в ночь с 31 декабря 1969 года на 1 января 1970 года. Именно эту дату взяли за точку отсчета «компьютерного» времени, которое исчисляется в секундах и занимает очень мало места на диске – всего 4 или 8 байт. С помощью такого способа кодирования программисты могут «спрятать» любую дату в одно число, и легко конвертировать его обратно в понятный пользователям формат.
Unix время (еще его называют Unix time или POSIX time) удобно использовать в различных операционных системах и языках программирования, так как оно отображается в виде одной величины, а не определенного количества полей, занимающих место. К тому же, UNIX time полностью соответствует стандарту UTC (в том числе и в високосных годах) – в таком случае соответствующие значения секунд просто повторяются.
Пару слов о терминах.
Итак, Unix-временем (или POSIX-временем) считается количество секунд, которые прошли с полуночи 1 января 1970 года до настоящего времени.
Unix Timestamp (временная метка) – это «зафиксированное» время, иными словами – конкретная дата, запечатленная в числе.
UTC (Universal Coordinated Time) – это Всемирное координированное время, которое «фиксируется» на нулевом меридиане, и от которого ведется отсчет географических часовых поясов.
Насколько «долговечна» данная система?
Всего лишь через пару десятков лет, а именно 19 января 2038 года в 03:14:08 по UTC Unix time достигнет значения 2147483648, и компьютерные системы могут интерпретировать это число как отрицательное. Ключ к решению данной проблемы лежит в использовании 64-битной (вместо 32-битной) переменной для хранения времени. В таком случае, запаса числовых значений Unix time хватит человечеству еще на 292 миллиарда лет. Неплохо, правда?
Unix время – одно для всех
Если вы живете в Лондоне или Сан-Франциско, а ваши друзья – в Москве, то «сверить часы» можно по Unix time: эта система в данный момент времени едина для всего мира. Естественно, если время на серверах выставлено правильно. А с помощью инструмента «Unixtime конвертер» такая конвертация займет у вас доли секунды.
Unix Timestamp конвертер
Что такое Unix время?
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 точностью до секунды.
Границы 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 timestamp что это
Unix epoch – калькулятор точного времени онлайн
Общепризнанным международным стандартом времени является UNIX или POSIX-время – особая система исчисления, при которой время хранится и отсчитывается в секундах для более высокой точности. Подобный вариант кодирования используется наравне с известной системой UTC, но по некоторым причинам является более удобным, например, если нужно сравнить даты или просто хранить время – в единой величине это делать удобней. Наш калькулятор точного времени онлайн работает с 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 Timestamp абсолютно бесплатно – мы не требуем регистрации и установки специальных программ. Вся информация представлена онлайн – кратко, содержательно, достоверно, без мешающих баннеров и всплывающих окон. А для перевода времени в другие форматы, используйте конвертер, тоже работающий на нашем сайте.
Заблуждения программистов о Unix-времени
Вчера Дэнни поинтересовался любопытными фактами о Unix-времени, а я вспомнил, что иногда оно работает совершенно неинтуитивно.
Вот эти три факта кажутся в высшей степени разумными и логичными, не так ли?
Настольные часы 1770-х годов. Собрано Джоном Леру. Из коллекции Wellcome. Опубликовано под лицензией CC BY
У всех трёх заблуждений одна причина: високосные секунды. Если вы не знакомы с дополнительными секундами, вот краткая справка:
Время UTC определяется двумя факторами:
Когда два времени выпадают из синхрона, в UTC добавляется или удаляется секунда, чтобы вернуть синхронизацию. С 1972 года служба IERS (которая управляет этим делом) добавила 27 дополнительных секунд. В результате получилось 27 суток UTC продолжительностью в 86 401 секунду. Теоретически возможно появление суток продолжительностью 86 399 секунд (минус одна). Оба варианта противоречат фундаментальному предположению о Unix-времени.
Время Unix предполагает, что каждый день длится ровно 86 400 секунд (60 × 60 × 24 = 86 400), без всяких дополнительных секунд. Если происходит такой скачок, то время Unix либо перепрыгивает через секунду, либо отсчитывая две секунды за одну. По состоянию на 2019 год в нём отсутствует 27 високосных секунд.
Так что наши заблуждения нужно дополнить следующим образом:
До сих пор на практике секунды никогда не удалялись (и замедление вращения Земли означает, что это маловероятно), но если бы это когда-либо произошло, это означало бы, что день UTC стал на одну секунду короче. В этом случае последняя секунда UTC (23:59:59) отбрасывается.
В каждых сутках Unix одинаковое количество секунд, поэтому последняя Unix-секунда укороченного дня не будет соответствовать никакому времени UTC. Вот как это выглядит, в интервалах по четверти секунды:
Это уже 27 раз произошло на практике. По окончании суток UTC добавляют дополнительную секунду 23:59:60. В сутках Unix одинаковое количество секунд, поэтому он не может добавить дополнительную секунду — вместо этого приходится повторять метки времени Unix для последней секунды. Вот как это выглядит, в интервалах по четверти секунды:
Если стартовать в 23:59:60.50 и подождать полсекунды, время Unix возвращается на полсекунды, а метка времени Unix 101 соответствует двум секундам UTC.
Вероятно, это не единственные странности времени Unix — только то, что я вчера вспомнил.