Utilia

Конвертор на Unix времеви печат

Преобразувайте Unix времеви печат в секунди или милисекунди в четими дати по местно време, UTC и ISO 8601 и обратно – всяка дата в epoch време.

Текущ времеви печат
–

Времеви печат → дата

Местно време
–
UTC
–
ISO 8601
–

Дата → времеви печат

Секунди
–
Милисекунди
–

Как да използвате конвертора на Unix времеви печат

  1. За да преобразувате времеви печат в дата, поставете epoch стойност като 1700000000 или 1700000000000. Инструментът разпознава по големината ѝ дали е в секунди, или в милисекунди.
  2. Прочетете резултата по вашия местен часови пояс, в UTC и във формат ISO 8601.
  3. За обратната посока въведете дата и час; инструментът връща съответната epoch стойност и в секунди, и в милисекунди.
  4. Погледнете текущия времеви печат най-горе, който се обновява на живо, когато ви трябва „сега“ като epoch стойност.

Какво е Unix времеви печат?

Unix времевият печат, наричан още epoch време или POSIX време, е броят секунди, изтекли от Unix епохата: 1 януари 1970 г. в 00:00:00 UTC. Например 1700000000 съответства на 14 ноември 2023 г. в 22:13:20 UTC. Датите преди 1970 г. се представят с отрицателни числа.

Времевите печати са популярни сред програмистите, защото са едно число, което не зависи от часови пояси, лятно часово време или формати на дати. Сравняването на два момента е просто изваждане, а подреждането по време е обикновено числово сортиране. Ще ги срещнете в бази данни, лог файлове, отговори на API, полета в JWT като exp и iat, метаданни на файлове и планировчици от рода на cron.

Имайте предвид, че Unix времето пренебрегва прекъслите секунди: всеки ден се брои за точно 86 400 секунди. Това опростява аритметиката и е причината времевият печат да не е строго броене на всяка физическа секунда от 1970 г.

Секунди или милисекунди

Най-честият източник на объркване е мерната единица. Традиционните Unix системи, PHP, time.time() на Python и повечето бази данни използват секунди, което днес дава 10-цифрено число. Date.now() на JavaScript, System.currentTimeMillis() на Java и много JSON API използват милисекунди, което дава 13-цифрено число. Ако милисекунди се изтълкуват като секунди, попадате десетки хиляди години в бъдещето; ако секунди се изтълкуват като милисекунди, попадате в януари 1970 г. Този инструмент гледа големината на числото, за да избере автоматично правилната единица, а при преобразуване на дата показва и двете стойности, за да копирате тази, която системата ви очаква.

Местно време, UTC и ISO 8601

Времевият печат определя един точен момент, но този момент се показва по различен начин според часовия пояс. Местният резултат използва часовия пояс, зададен на вашето устройство, а UTC е универсалната отправна точка, използвана от сървъри и логове. ISO 8601, например 2023-11-14T22:13:20.000Z, е недвусмисленият текстов формат, препоръчван за обмен на дати между системи; крайното Z означава UTC.

Проблемът на 2038 година

Много по-стари системи съхраняват Unix времето като 32-битово цяло число със знак, чиято максимална стойност е 2 147 483 647. Тази граница се достига на 19 януари 2038 г. в 03:14:07 UTC. Една секунда по-късно такъв брояч прелива до голямо отрицателно число и се чете като дата през декември 1901 г. Съвременните операционни системи, бази данни и езици до голяма степен са преминали към 64-битови стойности за време, които отместват границата милиарди години напред, но вградени устройства, стари файлови формати и стари колони в бази данни може все още да са засегнати. Самият JavaScript не е засегнат, защото съхранява времето като милисекунди в 64-битово число с плаваща запетая.

Поверителност

Всички преобразувания стават във вашия браузър с неговите вградени функции за дата. Никакви времеви печати или дати не се изпращат към сървър.

Често задавани въпроси

Как да разбера дали времевият ми печат е в секунди, или в милисекунди?

Пребройте цифрите. Сегашна дата е 10 цифри в секунди и 13 цифри в милисекунди. Инструментът прилага същата логика автоматично, въз основа на големината на числото.

Защо местното време се различава от UTC?

И двете описват един и същ момент. Местното време прилага отместването на часовия пояс на вашето устройство и правилата за лятно часово време, докато UTC няма отместване. Ако споделяте час с хора другаде, UTC или ISO 8601 предотвратява недоразумения.

Може ли Unix времевият печат да е отрицателен?

Да. Отрицателните стойности представят моменти преди 1 януари 1970 г. UTC. Например -86400 е 31 декември 1969 г. в 00:00:00 UTC.

Съдържа ли Unix времевият печат часови пояс?

Не. Времевият печат винаги е спрямо UTC и не носи информация за часови пояс. Часовият пояс има значение само когато го показвате като календарна дата и час.

Ще се повредят ли системите ми през 2038 г.?

Само ако съхраняват времето в 32-битово цяло число със знак. Проверете по-стари бази данни, вграден фърмуер и двоични файлови формати. Всичко, което използва 64-битово време, е безопасно в обозримо бъдеще.