Конвертор 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)Напомена
01970-01-01 00:00:00Unix епоха
1,000,000,0002001-09-09 01:46:401 milijarda sekundi
2,000,000,0002033-05-18 03:33:202 milijarde sekundi
2,147,483,6472038-01-19 03:14:07Problem 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 временску марку

Језик / окружењеКоманда
JavaScriptMath.floor(Date.now() / 1000)
Pythonimport time; int(time.time())
PHPtime()
Bashdate +%s
SQL (PostgreSQL)EXTRACT(EPOCH FROM NOW())::int
SQL (MySQL)UNIX_TIMESTAMP()
Gotime.Now().Unix()
RustSystemTime::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).