Конвертор от 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-та, бази данни и back-end системи използват секунди. Този инструмент приема и двата формата и автоматично определя дали вкълчвате секунди или милисекунди на основата на размера на числото.
Забележителни 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-битово число) |
Защо 1970?
Unix epoch от 1 януари 1970 г. е избран отчасти по конвенция и отчасти поради практически ограничения. Unix е разработен в края на 60-те и началото на 70-те години на XX век в Bell Labs. Разработчиците нуждаеха се от скорошна, кръгла начална дата за своето времево представяне. 1 януари 1970 г. беше достатъчно скорошна, за да е практична, и нямаше особено техническо значение — беше просто удобна начална точка.
Други системи използват различни епохи: Windows FILETIME епохата е 1 януари 1601 г.; GPS време е започнало на 6 януари 1980 г.; NTP епохата е 1 януари 1900 г. При конвертиране между системи е необходимо да знаете епохата на всяка система.
Секунди срещу милисекунди
Оригиналният Unix timestamp е в секунди. Повечето back-end езици и системи (Unix shell, Python time.time(), PHP time(), повечето бази данни) използват секунди. JavaScript Date.now() и new Date().getTime() връщат милисекунди. Това несъответствие е чест източник на грешки, когато JavaScript front-end комуникира със back-end API-та.
Unix timestamp в секунди е в момента 10-цифрено число (около 1,700,000,000 към 2023 г.). Timestamp в милисекунди е 13-цифрено число. Калкулаторът определя кой формат сте въвели на основата на броя цифри и конвертира съответно.
Проблемът на 2038 г.
Системи, които съхраняват Unix timestamps като знаково 32-битово число, могат да представят само дати до 2,147,483,647 секунди след епохата — което е 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 за exp (изтичане) и iat (издаден в) претенции. Жетон изтича, когато текущият timestamp превиши стойността на exp. Изчисляване на времена за изтичане — "този жетон трябва да изтече за 24 часа" — изисква добавяне на 86,400 секунди към текущия timestamp.
Cache TTL: Изтичането на кеша часто се задава като Unix timestamp или като брой секунди от сега. Отстраняването на проблеми с кеша честo изисква конвертиране на съхранен timestamp за изтичане в четлив формат.
Анализ на логове: Server логове често включват Unix timestamps. Конвертирането им в четливи дати е първата стъпка при съотнасяне на записи от логове със събитията в реалния свят.
Съхранение в база данни: Съхранение на timestamps като числа вместо форматирани текстови низове избягва грешки при конвертиране на часова зона и улеснява сортирането, заявки по диапазон и аритметика. Заявка за "всички записи от последните 7 дни" devient WHERE created_at > (NOW_UNIX - 604800).
