ToolHub
View All Posts

Unix Timestamp: объяснение и руководство по конвертации

Unix Timestamp — один из самых фундаментальных концептов в вычислениях, но он часто неправильно понимается. Это простой способ представления времени как одного числа: количество секунд, прошедших с 1 января 1970 года, 00:00:00 UTC (известного как Unix Epoch). Это руководство объясняет всё, что вам нужно знать о Unix Timestamp, от базовых концепций до конвертации в разных языках программирования.

Что такое Unix Timestamp?

Unix Timestamp — это способ представления момента времени как одного целого числа. Он подсчитывает количество секунд, прошедших с полуночи 1 января 1970 года по UTC. Это конкретное время называется Unix Epoch. Временная метка 0 представляет 1970-01-01 00:00:00 UTC. Временная метка 1700000000 представляет время ровно 1,700,000,000 секунд после Epoch.

Простота Unix Timestamp делает его невероятно практичным. Как одно число, его легко хранить, сравнивать и вычислять. Вы можете определить, какое из двух событий произошло раньше, с помощью простого числового сравнения. Вы можете рассчитать продолжительность между двумя событиями, вычитая временные метки. Это делает временные метки идеальными для баз данных, логирования, API и систем планирования.

Почему Unix Timestamp так широко используется

Как конвертировать Unix Timestamp

Конвертация между Unix Timestamp и человекочитаемыми датами — обычная задача в программировании. Вот как это сделать на разных языках и с помощью инструментов командной строки.

Временная меткаДата (UTC)Событие
01970-01-01 00:00:00Unix Epoch
10000000002001-09-09 01:46:40Отметка в 1 миллиард секунд
12345678902009-02-13 23:31:30Популярная тестовая временная метка
15000000002017-07-14 02:40:00Отметка в 1.5 миллиарда секунд
17000000002023-11-14 22:13:20Отметка в 1.7 миллиарда секунд

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

Конвертация временной метки в дату

Unix Timestamp обычно хранится как 32-битное знаковое целое число. Максимальное значение, которое может хранить 32-битное знаковое целое, — 2,147,483,647, что соответствует 03:14:07 UTC 19 января 2038 года. Через одну секунду после этого момента счётчик переполнится и обернётся к отрицательным значениям, которые интерпретируются как даты в 1901 году. Это известно как проблема 2038 года.

Конвертация даты в временную метку

Решение уже существует: использование 64-битных целых чисел для временных меток. 64-битное целое может представлять временные метки на протяжении примерно 292 миллиардов лет в обоих направлениях от Epoch, что намного превышает возраст Вселенной. Большинство современных систем уже перешли на 64-битные временные метки.

Конвертация в JavaScript

Unix Timestamp концептуально не зависит от часового пояса — он всегда представляет момент времени относительно UTC. Два человека в разных часовых поясах увидят одну и ту же Unix Timestamp для одного и того же момента. Разница в часовом поясе проявляется только при конвертации временной метки в локальное время.

Конвертация в Python

Нужно конвертировать Unix Timestamp? Попробуйте наш бесплатный онлайн-конвертер Unix Timestamp с поддержкой всех основных форматов.

Unix Timestamp в программировании

Unix Timestamp — это целое число, представляющее количество секунд, прошедших с 00:00:00 UTC 1 января 1970 года (Unix Epoch). Он предоставляет независимый от часового пояса способ представления момента времени, делая вычисления, такие как сравнение и поиск разницы, простыми с помощью базовой арифметики.

Проблема 2038 года (Y2K38) возникает из-за того, что многие системы хранят Unix Timestamp как 32-битное знаковое целое число. Максимальное значение 2,147,483,647 соответствует 03:14:07 UTC 19 января 2038 года. После этого момента временная метка переполнится и обернётся к отрицательным числам, вызывая ошибки в вычислениях дат. Решение — переход на 64-битные временные метки.

Часовые пояса и Unix Timestamp

Вы можете конвертировать Unix Timestamp в читаемую дату с помощью встроенных функций в большинстве языков программирования: new Date(timestamp * 1000) в JavaScript, datetime.fromtimestamp(timestamp) в Python, date('Y-m-d H:i:s', timestamp) в PHP или date -d @timestamp в командной строке Linux.

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

Ключевой факт: Unix Timestamp — это всегда количество секунд с 1970-01-01 00:00:00 UTC. Он не зависит от часового пояса. При конвертации в читаемую дату вы должны указать часовой пояс, иначе вы получите время в локальном часовом поясе вашей системы.

Распространённые pitfalls

В JavaScript: Math.floor(Date.now() / 1000). В Python: int(time.time()). В PHP: time(). В командной строке Linux: date +%s. Все эти методы возвращают текущую Unix Timestamp в секундах.

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

Need to convert between Unix timestamps and readable dates? Try our free Timestamp Converter.

Конвертер временных меток

Frequently Asked Questions

Конвертация в PHP

The Unix epoch is January 1, 1970, 00:00:00 UTC. It serves as the reference point for all Unix timestamp calculations. Timestamps represent the number of seconds that have elapsed since this moment.

Конвертация в командной строке

The 32-bit signed integer Unix timestamp will overflow on January 19, 2038, known as the Year 2038 problem. Systems using 64-bit integers will not face this issue for approximately 292 billion years. Most modern systems have already transitioned to 64-bit timestamps.

Что такое Unix Timestamp?

No, Unix timestamps are always in UTC and are not affected by time zones. The same timestamp represents the same instant worldwide. Time zone conversion only happens when displaying the timestamp as a human-readable date.

Что такое проблема 2038 года?

Standard Unix timestamps measure seconds since the epoch, while JavaScript and some APIs use milliseconds. A millisecond timestamp is 1000 times larger. For example, 1700000000 seconds equals 1700000000000 milliseconds.

Как конвертировать Unix Timestamp в читаемую дату?

Technically, Unix timestamps ignore leap seconds. Every day is treated as having exactly 86400 seconds. This means Unix time can drift slightly from UTC when leap seconds are inserted, but in practice this rarely causes issues.