Конвертер Unix timestamp у дату
Перетворіть Unix timestamp на читабельну дату й час — або будь-яку дату назад у Unix timestamp. Підтримує секунди й мілісекунди.
Поділитися інструментом
Вставити на сайт
Пов’язані інструменти
Що таке Unix timestamp?
Unix timestamp, також звана Unix time або POSIX time, — це кількість секунд, які минули з 1970-01-01 00:00:00 UTC, момент, відомий як Unix epoch. Це широко використовуваний стандарт у комп'ютерах, оскільки він представляє момент часу як одне число, що спрощує зберігання, порівняння та математичні операції.
JavaScript працює внутрішньо в мілісекундах, тому Date.now() повертає Unix timestamp, помножений на 1000. Багато API, баз даних і бекенд-систем використовують замість цього секунди. Цей інструмент приймає обидва формати й автоматично визначає, чи ви ввели секунди чи мілісекунди, на основі величини числа.
Значущі Unix timestamps
| Timestamp | Дата (UTC) | Примітка |
|---|---|---|
0 | 1970-01-01 00:00:00 | Unix epoch |
1,000,000,000 | 2001-09-09 01:46:40 | 1 мільярд секунд |
2,000,000,000 | 2033-05-18 03:33:20 | 2 мільярди секунд |
2,147,483,647 | 2038-01-19 03:14:07 | Проблема 2038 року (максимум 32-bit) |
Чому 1970?
Epoch Unix від 1 січня 1970 року була обрана частково за традицією, частково через практичні обмеження. Unix розроблялась у кінці 1960-х і на початку 1970-х років у Bell Labs. Розробникам потрібна була свіжа, кругла дата для початку їх системи часу. 1 січня 1970 року була досить свіжою для практичного використання й не мала особливого технічного значення — це була просто зручна точка відліку.
Інші системи використовують інші дати epoch: Windows FILETIME починається з 1 січня 1601; GPS time почалась 6 січня 1980; NTP epoch — 1 січня 1900. При конвертації між системами важливо знати epoch кожної з них.
Секунди проти мілісекунд
Оригінальний Unix timestamp вимірюється в секундах. Більшість мов серверної сторони й систем (Unix shell, Python time.time(), PHP time(), більшість баз даних) використовують секунди. JavaScript Date.now() та new Date().getTime() повертають мілісекунди. Ця невідповідність часто становить джерело помилок, коли JavaScript фронтенд спілкується з бекенд-API.
Unix timestamp у секундах на даний момент — це 10-значне число (біля 1,700,000,000 станом на 2023). Timestamp у мілісекундах — це 13-значне число. Калькулятор визначає, який формат ви ввели, на основі кількості цифр і конвертує його відповідно.
Проблема 2038 року
Системи, які зберігають Unix timestamps як знаковане 32-бітне число, можуть представляти дати тільки до 2,147,483,647 секунд після epoch — це 03:14:07 UTC 19 січня 2038 року. Після цього моменту 32-бітне знакове число переповнюється в велике від'ємне число, що представляє дату в 1901 році.
Це іноді називають проблемою "Y2K38" або Unix Millennium Bug. Сучасні 64-бітні системи не постраждають, оскільки 64-бітне знакове число може представляти timestamps приблизно на 292 мільярди років. Однак вбудовані системи, застарілі бази даних і старіше 32-бітне ПО можуть залишатись уразливими. Багато галузей — включно з телекомунікаціями, банківством та системами промислової автоматики — проводять постійну міграцію для вирішення цієї проблеми.
Як отримати поточний Unix timestamp
| Мова / середовище | Команда |
|---|---|
| JavaScript | Math.floor(Date.now() / 1000) |
| Python | import time; int(time.time()) |
| PHP | time() |
| Bash | date +%s |
| SQL (PostgreSQL) | EXTRACT(EPOCH FROM NOW())::int |
| SQL (MySQL) | UNIX_TIMESTAMP() |
| Go | time.Now().Unix() |
| Rust | SystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_secs() |
Практичне застосування
Розробка API: REST API зазвичай використовують Unix timestamps для полів created_at, updated_at та терміну дії токена. Timestamp не залежить від часового поясу й однозначний — на відміну від форматованих рядків дати, які залежать від локалі й правил форматування.
Термін дії токена: JWT (JSON Web Tokens) використовують Unix timestamps для claims exp (термін дії) та iat (дата видачі). Токен закінчується, коли поточний timestamp перевищує значення exp. Розрахунок терміну дії — "цей токен повинен закінчитися за 24 години" — потребує додавання 86,400 секунд до поточного timestamp.
Cache TTL: Закінчення терміну дії кешу часто встановлюється як Unix timestamp або як кількість секунд від тепер. Відладка проблем кешу часто потребує конвертування збереженого timestamp закінчення в читабельний формат дати.
Аналіз логів: Логи серверів часто містять Unix timestamps. Конвертування їх у читабельні дати — перший крок при кореляції записів логу з реальними подіями.
Зберігання в базі даних: Збереження timestamps як чисел замість форматованих рядків уникає помилок конвертування часових поясів і спрощує сортування, запити за діапазонами та математичні операції. Запит "всі записи за останні 7 днів" стає WHERE created_at > (NOW_UNIX - 604800).
Схожі статті
Unix-часи в кешуванні та TTL — як насправді працює закінчення терміну діїЗакінчення терміну дії кеша, значення TTL та логіка анулювання залежать від Unix-часу. Ось як системи кешування використовують часові мітки, як налагодити проблеми застарілого кеша та що може піти не так.
Unix-мітки часу для JWT і строку дії токенів — як це працюєJWT використовують Unix-мітки часу для claims про строк дії. Ось як працюють поля exp та iat, як рахувати “життя” токена і як дебажити проблеми зі строком дії через конвертер timestamp.
Unix-часи в базах даних — зберігання, запити та найкращі практикиЗберігання часових міток у базах даних як Unix-цілих чисел або datetime-рядків має справжні компроміси. Ось як кожен підхід працює в PostgreSQL, MySQL та SQLite, і коли кожен має сенс.