Конвертор Unix timestamp-а у датум
Претворите Unix timestamp у читљив датум и време — или било који датум назад у Unix timestamp. Подржава секунде и милисекунде.
Podeli alat
Ugnezdi na svom sajtu
Сродни алати
Шта је Unix временска марка?
Unix временска марка, позната и као Unix време или POSIX време, је број секунди које су прошле од 1970-01-01 00:00:00 UTC, познато као Unix епоха. То је широко коришћен стандард у рачунарству јер представља тачку у времену као један цео број, што чини складиштење, поређење и аритметику једноставним.
JavaScript interno ради у милисекундама, па Date.now() враћа Unix временску марку помножену са 1000. Многи API-ји, базе података и позадински системи користе секунде. Овај алат прихвата оба формата и аутоматски препознаје секунде или милисекунде на основу величине броја који унесете.
Значајне Unix временске марке
| Временска марка | Датум (UTC) | Напомена |
|---|---|---|
0 | 1970-01-01 00:00:00 | Unix епоха |
1,000,000,000 | 2001-09-09 01:46:40 | 1 milijarda sekundi |
2,000,000,000 | 2033-05-18 03:33:20 | 2 milijarde sekundi |
2,147,483,647 | 2038-01-19 03:14:07 | Problem godine 2038 (максимум 32-bit) |
Зашто 1970?
Unix епоха од 1. јануара 1970. је одабрана делом по конвенцији, а делом по практичним ограничењима. Unix је развијан крајем 1960-их и почетком 1970-их на Bell Labs. Разработљачи су требали недаван, округан почетни датум за своју временску репрезентацију. 1. јануар 1970. је био довољно недаван да буде практичан и није имао никакво посебно техничко значење — био је једноставно удобна референтна тачка.
Алтернативне еподе постоје у другим системима: Windows FILETIME епоха је 1. јануар 1601; GPS време је почело 6. јануара 1980; NTP епоха је 1. јануар 1900. При конверзији између система, познавање еподе сваког система је суштинско.
Секунде наспрам милисекунди
Оригинална Unix временска марка је у секундама. Већина језика и система на позадинском плану (Unix shell, Python-ов time.time(), PHP-ов time(), већина база података) користи секунде. JavaScript-ов Date.now() и new Date().getTime() враћају милисекунде. Ова несклад је честа извор грешака када JavaScript фронтенди комуницирају са позадинским API-јима.
Unix временска марка у секундама је тренутно 10-цифрени број (око 1.700.000.000 крајем 2023). Временска марка у милисекундама је 13-цифрени број. Калкулатор препознаје који формат сте унесли на основу броја цифара и претвара га у складу са тим.
Проблем године 2038
Системи који складиште Unix временске марке као означени 32-битни цео број могу представљати датуме само до 2,147,483,647 секунди после еподе — што је 03:14:07 UTC на 19. јануара 2038. После те тачке, означени 32-битни цео број прелива у велики негативан број, представљајући датум из 1901.
Ово се понекад назива проблем „Y2K38" или Unix Millennium Bug. Модерни 64-битни системи нису погођени, јер означени 64-битни цео број може представљати временске марке за приближно 292 milijarde година. Међутим, уградни системи, наслеђене базе podataka и старији 32-битни софтвер могу бити и даље угрожени. Многе индустрије — укључујући телекомуникације, банкарство и системе индустријске контроле — имају одвијајуће напоре миграције за суочавање са овим.
Како добити тренутну Unix временску марку
| Језик / окружење | Команда |
|---|---|
| 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() |
Практична уpoтреба
Развој API-ја: REST API-ји обично користе Unix временске марке за created_at, updated_at и поља истека жетона. Временска марка је независна од часовног појаса и недвосмислена — за разлику од форматираних датумских низова, који зависе од локала и конвенција форматирања.
Истек жетона: JWT (JSON Web Tokens) користе Unix временске марке за exp (истек) и iat (издато на) захтеве. Жетон истиче када тренутна временска марка пређе вредност exp. Израчунавање времена истека — „овај жетон требao да истекне за 24 часа" — захтева додавање 86.400 секунди тренутној временској марки.
Cache TTL: Истек кеша се често постављаOct као Unix временска марка или као број секунди од сада. Отклањање неуспеха кеша често захтева конверзију сачуване временске марке истека у људски читљив датум.
Анализа дневника: Серверски дневници често укључују Unix временске марке. Конверзија у читљиве датуме је први корак у повезивању уноса дневника са реалним događајима.
Складиштење базе podataka: Складиштење временских марки као целих бројева уместо форматираних низова избегава грешке конверзије часовног појаса и поједностављује сортирање, упите опсега и аритметику. Упит за „све записе од последњих 7 дана" постаје WHERE created_at > (NOW_UNIX - 604800).
