CalcAl

Unix Timestamp Converter

Мгновенный перевод между Unix Epoch и понятной датой. Справочник форматов, примеры кода и теория времени для разработчиков.

Загрузка калькулятора...
1970
Начало Эпохи (UTC)
UTC
Стандарт времени
32/64
Битность систем
ISO
Совместимость

Что такое Unix Timestamp?

Unix Timestamp (также известный как Epoch time или POSIX time) — это система описания моментов времени, принятая в операционных системах Unix и многих других компьютерных системах.

Это простое целое число, которое показывает, сколько секунд прошло с полуночи (00:00:00 UTC) 1 января 1970 года. Этот момент называют «Эпохой Unix».

Интересный факт

Дата 1 января 1970 была выбрана произвольно. В ранних версиях Unix (1971 год) время отсчитывалось каждые 1/60 секунды, и счетчик переполнялся всего за 2.5 года. Позже систему переработали: сделали отсчет в секундах и установили начало эпохи на 1970 год, чтобы охватить весь жизненный цикл системы.

Почему именно секунды?

Использование одного числа для обозначения времени невероятно удобно для компьютеров:

  • Легко вычислять разницу между датами (простое вычитание).
  • Время не зависит от часовых поясов (оно всегда в UTC).
  • Занимает мало места в памяти (4 или 8 байт).
  • Исключает путаницу с форматами дат (DD/MM vs MM/DD).

Как получить Timestamp?Примеры кода для популярных языков и баз данных

JavaScriptWeb / Node
Math.floor(Date.now() / 1000)

Date.now() возвращает миллисекунды, делим на 1000.

Python3.x
import time
int(time.time())
PHPBackend
time();
Go (Golang)
time.Now().Unix()
Java
System.currentTimeMillis() / 1000L
BashShell
date +%s
MySQL
SELECT UNIX_TIMESTAMP();
PostgreSQL
SELECT extract(epoch from now());
C#
DateTimeOffset.UtcNow.ToUnixTimeSeconds()
Критическая уязвимость

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

В старых 32-битных системах время хранится как знаковое 32-битное целое число. Максимальное значение, которое может принять такое число: 2 147 483 647.

Это значение будет достигнуто 19 января 2038 года в 03:14:07 UTC.

В следующую секунду счетчик переполнится, и значение станет отрицательным: -2 147 483 648. Для компьютеров это будет означать скачок времени в прошлое — в 13 декабря 1901 года.

Решение

Переход на 64-битные системы полностью решает эту проблему. 64-битный счетчик может хранить время на протяжении 292 миллиардов лет — это в 20 раз больше возраста Вселенной.

Апокалипсис 32-битных систем

Текущий Timestamp~1.7 млрд
Лимит (INT32_MAX)2,147,483,647
19 Jan 2038 03:14:07 UTC

64-bit systems = SAFE

Часто задаваемые вопросы

Нет. Unix-таймстамп увеличивается ровно на 86400 секунд каждый день, игнорируя «високосные секунды» (leap seconds), которые иногда добавляются к всемирному координированному времени (UTC) для синхронизации с вращением Земли. Это делает систему простой, но технически она может расходиться с реальным астрономическим временем на пару секунд.
Timestamp един для всего мира. Если вы видите разные значения, скорее всего, вы смотрите на локальное время, уже конвертированное из таймстампа с учетом вашего часового пояса, или же на устройстве сбиты системные часы.
В Excel дата хранится иначе (дни с 1900 года). Формула для конвертации Unix Timestamp (в ячейке A1) в дату: =(A1/86400)+DATE(1970,1,1). Не забудьте установить формат ячейки «Дата/Время».
Время до 1970 года представляется отрицательными числами. Например, -1 соответствует 23:59:59 31 декабря 1969 года. Большинство современных систем корректно работают с отрицательными таймстампами.
Классический Unix Timestamp — это секунды (10 цифр). В JavaScript (Date.now()) и Java (System.currentTimeMillis()) используется формат в миллисекундах (13 цифр). Чтобы получить секунды из миллисекунд, нужно разделить число на 1000.
Лиана Арифметова
Создатель

Лиана Арифметова

Миссия: Демократизировать сложные расчеты. Превратить страх перед числами в ясность и контроль. Девиз: «Любая повторяющаяся задача заслуживает своего калькулятора».

Данный сервис предоставляется «как есть». Мы не несем ответственности за ошибки в программном обеспечении, возникшие вследствие использования данных кодов или расчетов в критически важных системах.