← Усі інструменти

Конвертер Unix-таймстампів

Конвертуйте Unix-таймстампи у дати та назад миттєво у браузері. Epoch-час, секунди та мілісекунди, підводні камені UTC та проблема 2038 року.

Unix-мітки часу без головного болю

Запитайте трьох розробників, котра зараз година, — і ви можете отримати три різні відповіді залежно від того, де вони перебувають. Запитайте Unix-мітку часу — і отримаєте рівно одне число, однакове для всіх на планеті. Саме цей єдиний цілочисельний лічильник і є причиною, чому epoch-час непомітно лежить в основі майже кожного лог-файлу, рядка бази даних і API-відповіді, з якими вам доведеться мати справу. Ця сторінка пояснює, що означає це число, як читати його в обидва боки, і де воно зазвичай підводить людей.

Glowing clock dissolving into a stream of light-digits, representing Unix epoch time
Epoch-час — це єдиний лічильник, що тикає вперед із 1970 року.

Що таке Unix-час насправді

Unix-мітка часу — це кількість секунд, що минули з 00:00:00 UTC 1 січня 1970 року, без урахування секунд координації. Цей момент називається epoch (початком відліку), і він був обраний ранніми інженерами Unix просто тому, що це була зручна кругла дата для відліку. На момент epoch значення дорівнює рівно 0. Кожна наступна секунда додає одиницю, тому число тільки зростає. Дати до 1970 року теж цілком допустимі — вони виражаються від'ємними цілими числами.

Ви також можете зустріти цю концепцію під назвами «час POSIX» або, у вільному використанні, «epoch-час». Хоч як би це не називалося, механіка однакова: один постійно зростаючий лічильник секунд. Оскільки це звичайне ціле число, а не відформатований рядок, комп'ютер може зберігати його в кількох байтах і порівнювати два значення за допомогою однієї операції віднімання.

Секунди, мілісекунди та похідні

Класичний Unix-час рахує цілі секунди, даючи знайоме десятизначне число, яке ми бачимо сьогодні. Але багатьом середовищам потрібна вища точність. JavaScript, наприклад, працює в мілісекундах, виробляючи тринадцятизначне значення, а деякі системи йдуть ще далі — до мікросекунд або наносекунд. Надійне практичне правило: десятизначне число — це секунди, тринадцятизначне — мілісекунди. Якщо після конвертації ваша дата потрапила кудись близько до 1970 року, хоча ви очікували поточний момент, — майже напевно ви подали мілісекунди у поле для секунд, або навпаки. Наш конвертер автоматично визначає порядок величини, тому вам рідко доведеться гадати.

Чому розробники покладаються на мітки часу

Головна перевага полягає в тому, що мітка часу є нейтральною щодо часового поясу. Ціле число 1735689600 позначає один і той самий момент в Токіо, Берліні та Сан-Паулу. Зберігання цього числа замість відформатованого локального рядка означає, що вам ніколи не доведеться гадати, якому годинниковому поясу належало значення. Сортування також є тривіальним, оскільки хронологічний порядок — це просто числовий порядок, тому індекс бази даних по стовпцю з міткою часу сортує події правильно без жодного розбору. Арифметика так само зручна: різниця між двома подіями — це одне віднімання, а додавання доби — це додавання 86400. Саме ці властивості і є причиною, чому логи, токени, кеші та черги повідомлень використовують epoch-час.

Конвертація в обидва боки

Перетворення мітки часу на людську дату означає взяти лічильник секунд і спроектувати його на календар, а потім відформатувати в потрібному часовому поясі. Зворотній напрямок: взяти рік, місяць, день і час, вирішити, в якому часовому поясі вони виражені, і стиснути все це назад у секунди від початку відліку. Наш інструмент виконує обидва напрямки миттєво і повністю у вашому браузері, тому нічого з того, що ви вставляєте, не залишає вашу машину. Вставте число, щоб декодувати його, або виберіть дату, щоб закодувати, — і одночасно побачте результат як у UTC, так і за місцевим часом.

Glowing timeline ribbon with a marker sliding along a flowing stream of epoch seconds
Одна мітка на одній шкалі часу, читається як у UTC, так і за місцевим часом.

UTC проти місцевого часу: класична пастка

Сама мітка часу не має часового поясу — вона завжди прив'язана до UTC. Плутанина виникає лише під час відображення. Якщо ви конвертуєте 1700000000 і ваш екран показує вечірній час, тоді як колега в іншій країні бачить денний, нічого не зламано — ви обидва дивитесь на один і той самий момент, відображений у різних місцевих годинниках. Помилки виникають, коли код читає локальну дату як UTC, або записує час по стінному годиннику без фіксації зміщення. Безпечна звичка: зберігати і передавати UTC, а місцеве зміщення застосовувати в самий останній момент — лише при відображенні значення людині. У разі сумнівів порівнюйте з рядком UTC у конвертері, а не з місцевим.

Проблема 2038 року

Багато старіших систем зберігали Unix-час у знаковому 32-бітному цілому числі. Це поле вичерпує місце рівно через одну секунду після 03:14:07 UTC 19 січня 2038 року, коли лічильник переповнюється і обертається до від'ємного числа, потенційно відкидаючи дати назад до 1901 року. Це та сама родина проблем, що й Y2K. Хороша новина: сучасні операційні системи та мови переважно перейшли на 64-бітні мітки часу, які не переповняться приблизно 292 мільярди років, тому для нового коду це здебільшого цікавий історичний факт, а не аварійна ситуація.

Для інших інструментів на основі браузера дивіться наші інструменти для розробників, а якщо вам потрібно попрацювати з числами безпосередньо, калькулятори знаходяться одним кліком далі.

Часті запитання

Що таке Unix-мітка часу?

Це кількість секунд від 00:00:00 UTC 1 січня 1970 року, без урахування секунд координації. Цей початковий момент називається epoch, і лічільник лише збільшується з часом.

Чому моє число конвертується в дату близько 1970 року?

Ви, мабуть, переплутали секунди і мілісекунди. Десятизначне число — це секунди, а тринадцятизначне — мілісекунди. Подача мілісекунд у поле для секунд ділить уявний час приблизно на тисячу і переміщає вас близько до початку відліку.

Чи має Unix-мітка часу часовий пояс?

Ні. Значення завжди прив'язане до UTC. Часовий пояс з'являється лише тоді, коли ви відображаєте мітку як дату у читабельному вигляді, — саме тому одне і те ж число може показувати різний настінний час для різних людей.

Як конвертувати дату назад у мітку часу?

Вкажіть рік, місяць, день і час, вирішіть, в якому часовому поясі ця дата виражена, — і інструмент стисне її до секунд від початку відліку. Ви можете виконати обидва напрямки на цій сторінці миттєво у браузері.

Що таке проблема 2038 року?

Системи, що зберігають Unix-час у знаковому 32-бітному цілому числі, переповнюються через одну секунду після 03:14:07 UTC 19 січня 2038 року. Сучасні 64-бітні мітки часу уникають цього на мільярди років, тому більшість сучасного програмного забезпечення не зачеплена.

Чи передаються мої дані на сервер?

Ні. Конвертація відбувається повністю у вашому браузері, тому будь-яка мітка часу або дата, яку ви вставляєте, залишається на вашому пристрої.