Конвертер времени Unix Epoch и генератор временных меток Discord

Преобразуйте временные метки эпох Unix в удобочитаемые даты и наоборот. Создавайте временные метки Discord с возможностью копирования и вставки в реальном времени.

Текущее время Unix Epoch
секунды 0000000000
миллисекунды 0000000000000
Местное время
-
Время по UTC
-
Unix Epoch (sec)
-
Unix Epoch (ms)
-
Относительное время
-
Сравнение часовых поясов Перемещайте ползунок, чтобы синхронно сопоставлять местное время и даты в различных часовых поясах в реальном времени.

Перемещайте слайдер для визуального сравнения времени в различных часовых поясах.

-12h -6h UTC (0) +6h +12h

                                
                            

Синхронизация распределенных систем баз данных, регистрация событий приложений и отладка полезных данных API требуют высокоточного стандартизированного метода отслеживания времени. Стандартизация времени эпохи Unix обеспечивает неизменяемое, независимое от часового пояса целое число, которое представляет точное количество секунд, прошедших с 1 января 1970 года. В этом подробном руководстве подробно описана механика временных меток Unix, показаны методы программного преобразования в современных средах и объясняется, как анализировать альтернативные структуры времени, такие как идентификаторы снежинок Discord.

Понимание динамики времени и временных меток эпохи Unix

Время Unix (также известное как эпоха Unix, время POSIX или временная метка Unix) отслеживает хронологический прогресс как увеличивающееся целое число. Он представляет собой количество секунд, прошедших с момента отсчета 1 января 1970 года, 00:00:00 UTC (представление ISO 8601: 1970-01-01T00:00:00Z). В момент этой эпохи счетчик стоял ровно на 0.

Временные метки эпох строго не зависят от часового пояса. Целое число представляет собой единый универсальный момент во всем мире, а локальные клиентские приложения корректируют уровень представления, применяя определенные смещения UTC. Чтобы увидеть, как работает сопоставление часовых поясов, сравните локальную интерпретацию отметки времени 1577923200:

Часовой пояс региона Локализованная дата и время Значение смещения
Время по Гринвичу/UTC Четверг, 2 января 2020 г., 00:00:00 UTC+00:00
Индия (Калькутта) Четверг, 2 января 2020 г., 05:30:00 UTC+05:30
Америка (Нью-Йорк) Среда, 1 января 2020 г., 19:00:00 UTC-05:00

Время Unix не учитывает високосные секунды. Вместо этого предполагается, что каждый календарный день содержит ровно 86 400 секунд. Поскольку високосные секунды игнорируются в счетчике (имеют то же самое значение метки времени, что и предыдущая секунда), время эпохи Unix не поддерживает идеальную линейную синхронизацию с универсальным координированным временем (UTC) на длинных геологических промежутках. Для дат, предшествующих начальному порогу 1 января 1970 г., система использует отрицательные целочисленные значения (например, -86400 обозначает 31 декабря 1969 г., 00:00:00 UTC).

Чтобы работать с этими числами при моделировании базы данных или фоновых рабочих задачах, разработчики полагаются на фиксированные хронологические интервалы. В следующем списке стандартные единицы сопоставлены с их точными значениями в секундах:

  • 1 час: 3600 секунд.
  • 1 день: 86 400 секунд.
  • 1 неделя: 604 800 секунд.
  • 1 месяц (рассчитано на 30,44 дня): 2 629 743 секунды.
  • 1 год (рассчитано на 365,24 дня): 31 556 926 секунд.

Вычисление значений продолжительности непосредственно с помощью этих значений позволяет легко управлять расписаниями cron, истекать срок действия токенов JWT или создавать собственные индексы TTL в базах данных NoSQL.

Секунды против миллисекунд: навигация по точности цифр

Временные метки в современном программном обеспечении работают с разной степенью точности в зависимости от требований приложения. В большинстве системных проектов используется одно из этих четырех разрешений:

  1. Секунды (10-значный формат): Например, 1735689600. Это стандартное разрешение, используемое Python, PHP, реляционными базами данных (например, PostgreSQL и MySQL) и средами оболочки Linux.
  2. Миллисекунды (13-значный формат): Например, 1735689600000. Этот формат является стандартным в JavaScript, Java и большинстве современных веб-API на основе JSON.
  3. Микросекунды (16-значный формат): Например, 1735689600000000. Обычно зарезервировано для высокоточной трассировки, системного журналирования и платформ низкоуровневой диагностики.
  4. Наносекунды (19-значный формат): Используется в специализированных системах трассировки уровня ядра и сетях обработки в реальном времени.

Чтобы преобразовать секунды в миллисекунды, умножьте целое значение на 1000. И наоборот, чтобы преобразовать миллисекунды обратно в стандартные секунды, примените целочисленное деление на 1000, чтобы удалить конечные цифры.

Понимание ориентировочных и последовательных временных меток Unix дает четкое представление о хронологической прогрессии и масштабе:

Временная метка Unix Эквивалентная дата и время UTC Контекст вехи
0 Четверг, 1 января 1970 г., 00:00:00 UTC Эпоха Unix
1 000 000 000 Воскресенье, 9 сентября 2001 г., 01:46:40 UTC Веха в одну миллиардную секунду
1 234 567 890 Пятница, 13 февраля 2009 г., 23:31:30 UTC Последовательная последовательность десятичных цифр
1 735 689 600 Среда, 1 января 2025 г., 00:00:00 UTC Начало 2025 года
2 000 000 000 Вторник, 18 мая 2033 г., 03:33:20 UTC Двухмиллиардная секунда
2 147 483 647 Вторник, 19 января 2038 г., 03:14:07 UTC Абсолютный максимальный 32-битный предел со знаком

Проблема 2038 года: почему 32-битные системы терпят неудачу

Устаревшие системы, встроенное ПО и схемы баз данных, хранящие временные метки Unix в виде подписанных 32-битных целых чисел, в конечном итоге столкнутся с пределом переполнения. 32-битное целое число со знаком может хранить только значения до 2 147 483 647. Точная точка перелома наступит 19 января 2038 г., в 03:14:07 UTC.

На следующем такте системных часов (03:14:08 UTC) счетчик целых чисел переполняется и возвращается к минимальному отрицательному пределу -2,147,483,648. Системы, которые не могут справиться с этим переходом, интерпретируют дату как 13 декабря 1901 года. Это приведет к сбоям системы, аннулированию сертификатов, ошибкам файловой системы и повреждению запросов к базе данных.

Программные методы преобразования и создания временных меток Unix

Чтобы помочь разработчикам фиксировать текущее время и выполнять преобразования, в таблице ниже описаны методы получения стандартных меток времени эпохи и преобразования общего значения (с использованием 1800000000 в качестве ссылки) обратно в местное время на разных языках и платформах.

Язык/Платформа Текущая эпоха (секунды) Преобразовать эпоху в дату
JavaScript Math.floor(Date.now()/1000) новая дата (1800000000 * 1000).toLocaleString()
Питон интервал (время.время()) время.ctime(1800000000)
Ява Instant.now().getEpochSecond() new SimpleDateFormat("ММ/дд/гггг ЧЧ:мм:сс").format(new Date(1800000000L * 1000))
Идти время.Сейчас().Unix() время.Unix(1800000000, 0)
PHP время() дата('r', 1800000000)
Руби Время.сейчас.to_i Время.at(1800000000)
С# DateTimeOffset.Now.ToUnixTimeSeconds() DateTimeOffset.FromUnixTimeSeconds(1800000000).LocalDateTime
С++ длительность_cast<секунды>(system_clock::now().time_since_epoch()).count()
Ржавчина SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_secs()
Перл время скаляр по местному времени (1800000000)
PostgreSQL ВЫБРАТЬ ИЗВЛЕЧЕНИЕ(ЭПОХА ОТ СЕЙЧАС()); ВЫБЕРИТЕ TO_TIMESTAMP(1800000000);
MySQL ВЫБЕРИТЕ UNIX_TIMESTAMP(СЕЙЧАС()); ВЫБЕРИТЕ FROM_UNIXTIME(1800000000);
SQL-сервер SELECT DATEDIFF(SECOND, '1970-01-01', GETUTCDATE()); SELECT DATEADD(SECOND, 1800000000, '1970-01-01');
SQLite ВЫБЕРИТЕ unixepoch(); SELECT datetime(1800000000, 'unixepoch');
Оболочка Unix/Linux дата +%s дата -ud @1800000000
macOS дата +%s дата -j -r 1800000000
PowerShell [DateTimeOffset]::Now.ToUnixTimeSeconds() [DateTimeOffset]::FromUnixTimeSeconds(1800000000).LocalDateTime
Excel/Таблицы =(А1/86400) + 25569

Пользовательские эпохи и генераторы временных меток Discord в виде снежинок

Различные архитектуры используют специализированные эталонные эпохи и увеличивают разрешение в зависимости от аппаратных платформ, баз данных или спецификаций приложений. Некоторые из этих форматов включают в себя:

  • Метка времени LDAP: Отсчет ведется блоками по 100 наносекунд, начиная с 1 января 1601 года.
  • .NET DateTime Ticks: отсчитывается блоками по 100 наносекунд, начиная с 1-го года по григорианскому календарю.
  • Метка времени Chrome/WebKit: отсчитывается в микросекундах, начиная с 1 января 1601 года.
  • Mac HFS+: отсчет ведется в секундах, начиная с 1 января 1904 года.
  • Метка времени NTP: отсчитывается в секундах, начиная с 1 января 1900 года.
  • Время GPS: Отсчет ведется в секундах и неделях, начиная с 6 января 1980 г.
  • Метка времени SAS: отсчитывается в секундах или днях, начиная с 1 января 1960 г.
  • Основные данные Cocoa: отсчет ведется в секундах, начиная с 1 января 2001 г.
  • Excel OADate: отсчет ведется в дробных днях, начиная с 1 января 1900 года.
  • Метка времени FAT: отсчитывается в секундах, начиная с 1980 или 2000 года.
  • Юлианский день: измеряет хронологический прогресс в днях от древних астрономических точек отсчета.
  • Snowflake ID: децентрализованный формат индексации временных меток, используемый Discord и Twitter (X).

Понимание временных меток Discord и идентификаторов снежинок

Discord генерирует уникальные децентрализованные 64-битные целые числа без знака (идентификаторы снежинки) для идентификации таких объектов, как сообщения, каналы, серверы и пользователи. В отличие от стандартных увеличивающихся целых чисел или UUID с высокими издержками, снежинка Discord встраивает точное время создания внутри самого идентификатора, что повышает производительность в распределенных системах.

Структура идентификатора снежинки Discord разделена на четыре отдельных компонента:

  • Метка времени (42 бита): представляет собой миллисекунды, прошедшие с момента пользовательской эпохи Discord (установленной на 1 января 2015 г. в 00:00:00 по всемирному координированному времени, что эквивалентно временной метке Unix 1420070400000).
  • Идентификатор работника (5 бит): представляет внутренний индекс работника сервера.
  • Идентификатор процесса (5 бит): представляет внутренний индекс процесса.
  • Инкремент (12 бит): последовательный счетчик, который сбрасывается на 0 каждую миллисекунду для каждого процесса.

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

Синтаксис Markdown Пример вывода (для Unix 1735689600) Описание стиля отображения
<t:1735689600:t> 00:00 Короткое время
<t:1735689600:T> 00:00:00 Длинное время
<t:1735689600:d> 01.01.2025 Короткая дата
<t:1735689600:D> 1 января 2025 г. Длинная дата
<t:1735689600:f> 1 января 2025 г., 00:00 Короткая дата/время
<t:1735689600:F> среда, 1 января 2025 г., 00:00 Длинная дата/время
<t:1735689600:R> через 5 лет / 5 лет назад Относительное время

Оптимизация рабочего времени в распределенных системах

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

При разработке API или настройке очередей сообщений помните об этих трех правилах:

  1. Сохраняйте время в формате UTC или целочисленного формата эпохи: Не допускайте смещения местных часовых поясов в слоях постоянства. Применяйте локализацию исключительно на уровне представления.
  2. Отдайте приоритет 64-битному представлению. При проектировании столбцов базы данных или выборе структур программирования откажитесь от 32-битных типов, чтобы предотвратить переполнение среды выполнения в 2038 году.
  3. Выберите подходящую точность. Соответствуйте системным спецификациям (например, используйте миллисекунды для событий API и наносекунды только при отслеживании распределенных блокировок).

При преобразовании временных меток или проверке эпох с помощью утилит браузера безопасность и конфиденциальность имеют первостепенное значение. Инструмент преобразования Toolsaur напрямую реализует эту философию: «Вся обработка выполняется локально в вашем браузере. Ваши данные никогда не отправляются на наши серверы». Это гарантирует, что конфиденциальные системные журналы, содержащие временные метки базы данных, никогда не попадут на сторонние конечные точки.

Часто задаваемые вопросы о конвертерах эпох

Почему временные метки Unix не зависят от часового пояса?

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

В чем разница между 10-значной и 13-значной меткой времени?

10-значная временная метка представляет точность в секундах (например, 1735689600), что типично для операционных систем POSIX, баз данных Python и SQL. 13-значная временная метка представляет точность в миллисекундах (например, 1735689600000), что является стандартом для среды выполнения JavaScript, Java и современных API-интерфейсов REST. Перемещение между ними требует умножения или деления на 1000.

Как проблема 2038 года повлияет на современные базы данных?

Если в столбце базы данных хранятся временные метки Unix с использованием 32-битного целочисленного типа данных со знаком (например, INT в старых схемах базы данных), любая запись с меткой времени после 19 января 2038 года, 03:14:07 UTC приведет к переполнению. Это преобразует число в отрицательное значение, интерпретируя будущие даты как 13 декабря 1901 года. Системы должны преобразовать эти столбцы в 64-битные целые числа со знаком (BIGINT).

Как время Unix обрабатывает дополнительные секунды?

Время Unix не учитывает дополнительные секунды и предполагает, что каждый день состоит ровно из 86 400 секунд. Когда возникает високосная секунда, временная метка Unix повторяется или приостанавливается на секунду. Такой выбор конструкции упрощает математические расчеты, но вызывает незначительные отклонения от точных временных шкал всемирного координированного времени (UTC).

Что такое идентификатор снежинки Discord и чем он отличается от стандартной метки времени Unix?

Идентификатор снежинки Discord — это пользовательское 64-битное целое число без знака, которое кодирует метку времени создания вместе с метаданными архитектуры сервера (идентификатор работника, идентификатор процесса и локальное приращение). В отличие от стандартной 10-значной временной метки Unix в секундах, идентификатор «снежинка» использует пользовательскую эпоху, начинающуюся с 1 января 2015 года, и отслеживает интервалы в миллисекундах, сохраняя это высокоточное время в первых 42 битах идентификатора.

Как преобразовать временную метку эпохи в Microsoft Excel?

Excel отслеживает даты как количество дней, прошедших с 1 января 1900 года. Чтобы преобразовать стандартную 10-значную временную метку Unix (секунды) в ячейке A1 в читаемую дату в Excel, примените формулу =(A1 / 86400) + 25569, где 86400 — это количество секунд в дне, а 25569 — это смещение в днях между эпохой Excel и эпохой Unix. Установите форматирование ячейки «Дата» или «Время», чтобы просмотреть выходные данные.