Конвертер Unix Timestamp: Полное руководство
Unix timestamp — это универсальный язык времени в вычислительной технике. Каждый лог-файл, запись базы данных и ответ API используют timestamp для записи, когда произошли события. Это подробное руководство объясняет, как работают timestamp, почему они важны и как эффективно работать с ними в различных системах и временных зонах.
Что такое Unix Timestamp?
Unix timestamp (также называемый Epoch время или POSIX время) — это способ представления времени как простого числа: количество секунд, прошедших с 1 января 1970 года, 00:00:00 UTC. Этот момент называется "Unix epoch" и служит универсальной точкой отсчета времени в вычислениях. Красота timestamp заключается в их простоте. Число 1700000000 означает ровно одно: 1.7 миллиарда секунд после epoch, что является 14 ноября 2023 года в 22:13:20 UTC. Никакой двусмысленности о формате даты, никакой путаницы временных зон, никаких соображений о переходе на летнее время — просто число. Почему был выбран этот подход? В ранние дни разработки Unix в конце 1960-х годов компьютеры имели ограниченную память и вычислительную мощность. Хранение дат в виде строк ("14 ноября 2023") или структурированных данных потребляло ценные ресурсы. Одно число было эффективным для хранения, быстрым для сравнения и легким для вычислений. Unix timestamp всегда в UTC (всемирное координированное время), что устраняет сложность временных зон на уровне хранения. Когда вы храните timestamp, вы храните объективный момент времени. Интерпретация в местное время происходит во время отображения, а не во время хранения. Timestamp 0 представляет epoch: 1 января 1970 года, 00:00:00 UTC. Положительные числа представляют моменты после epoch (большинство timestamp, с которыми вы будете работать). Отрицательные числа представляют моменты до epoch — timestamp -86400 это 31 декабря 1969 года. Различные системы используют различную точность. Традиционный Unix использует секунды (10 цифр вроде 1700000000). JavaScript и многие современные API используют миллисекунды (13 цифр вроде 1700000000000). Некоторые системы используют микросекунды или наносекунды. Всегда проверяйте, с какой точностью вы работаете, чтобы избежать ошибок в 1000 раз или больше.
Зачем использовать Timestamp?
Timestamp решают фундаментальные проблемы, которые досаждают другим представлениям времени. Понимание их преимуществ помогает вам ценить, почему они универсальны в вычислениях, несмотря на то, что они недружелюбны для человека. Независимость от временной зоны, возможно, является величайшим преимуществом. Timestamp 1700000000 означает один и тот же мгновенный момент везде на Земле. Нет необходимости указывать временную зону, никаких ошибок конвертации, никакой путаницы летнего времени. Независимо от того, находитесь ли вы в Токио, Лондоне или Нью-Йорке, этот timestamp представляет один и тот же момент. Обработка временных зон происходит только во время отображения, а не хранения или вычисления. Сортируемость и сравнение тривиальны. 1700000000 раньше или позже 1699999999? Простое числовое сравнение. Попробуйте сравнить "14 ноя 2023 22:13 МСК" с "14.11.2023 22:13 CET" — вам нужно парсить форматы дат, обрабатывать временные зоны, а затем сравнивать. Timestamp устраняют эту сложность. Вычисления длительности — элементарная арифметика. Сколько секунд между двумя событиями? Вычтите timestamp. Хотите добавить 30 дней к дате? Добавьте 2592000 (30 × 24 × 60 × 60). Нет необходимости учитывать длину месяцев, високосные годы или переходы временных зон. Эффективность хранения важна в масштабе. Timestamp — это 4 или 8 байт (32-битное или 64-битное целое число). Строка даты вроде "2023-11-14T22:13:20+00:00" — это 25 байт. Когда у вас миллиарды записей, эта разница значительна. Индексирование и запросы базы данных быстрее с целыми числами, чем со строками. "Найти все записи между timestamp X и Y" — это простой запрос диапазона. "Найти все записи в ноябре 2023" со строковыми датами требует парсинга и медленнее. Однозначный парсинг устраняет проблему "является ли 11/12/13 ноябрем 12 или декабрем 11?". С timestamp есть один формат и одна интерпретация. API и обмен данными становятся проще, когда все согласны на представлении. Кросс-платформенная согласованность означает, что timestamp работают идентично на операционных системах, языках программирования и базах данных. Один и тот же timestamp, распарсенный в Python, JavaScript и Java, представляет один и тот же момент.
Миллисекунды против секунд
Один из наиболее распространенных источников ошибок timestamp — путаница секунд и миллисекунд. Эта разница в 1000 раз приводит ко временам, которые либо далеко в прошлом, либо далеко в будущем, вызывая ошибки, которые могут быть удивительно сложно диагностировать. Традиционные Unix timestamp используют секунды с epoch. Это 10 цифр для текущих дат (вроде 1700000000). Большинство инструментов командной строки, многие API и базы данных, такие как MySQL, используют секунды. Когда документация говорит "Unix timestamp", обычно это означает секунды. JavaScript и многие современные системы используют миллисекунды. JavaScript Date.now() возвращает 13-значное число (вроде 1700000000000). Это обеспечивает точность ниже секунды для синхронизации событий и анимации. Java System.currentTimeMillis() аналогично возвращает миллисекунды. Как определить, с чем вы имеете дело: посчитайте цифры. 10 цифр = секунды, 13 цифр = миллисекунды. Текущие timestamp в секундах около 1.7 миллиарда. В миллисекундах они около 1.7 триллиона. Если timestamp дает вам дату в 1970 или 55,000 году н.э., вы, вероятно, имеете неправильную единицу. Конвертация между ними: секунды в миллисекунды: умножьте на 1000. Миллисекунды в секунды: разделите на 1000 (и опционально округлите вниз, чтобы удалить десятичные дроби). Смешанная точность — частый источник ошибок. Если ваш фронтенд отправляет миллисекунды, но ваш бэкенд ожидает секунды, вы можете сохранить дату на 1000 лет в будущем. Если ваш бэкенд отправляет секунды, но ваш фронтенд ожидает миллисекунды, объекты Date могут показывать январь 1970. Некоторые системы используют еще более высокую точность: микросекунды (16 цифр), наносекунды (19 цифр). Базы данных, такие как PostgreSQL, поддерживают точность микросекунд. Высокопроизводительные системы, измеряющие операции, могут использовать наносекунды. Всегда проверяйте документацию для ожидаемой точности. Лучшие практики: документируйте, используете ли вы секунды или миллисекунды в ваших API. Используйте согласованные единицы во всей кодовой базе. Конвертируйте на границах систем явно. Тестируйте с timestamp, которые показывают разницу (текущие даты против 1970).
Попробовать инструмент
Конвертер Timestamp
Узнать больше
Вопросы и ответы
Конвертер Timestamp
Вопросы и ответы →