Prevodník Unix timestamp na dátum
Preveďte Unix timestamp na čitateľný dátum a čas — alebo akýkoľvek dátum späť na Unix timestamp. Podporuje sekundy aj milisekundy.
Zdieľaj tento nástroj
Vložiť na svoj web
Súvisiace nástroje
Čo je Unix timestamp?
Unix timestamp, nazývaný tiež Unix time alebo POSIX time, je počet sekúnd, ktoré uplynuli od 1970-01-01 00:00:00 UTC, známeho ako Unix epoch. Je to široko používaný štandard v informatike, pretože predstavuje bod v čase ako jedno celé číslo, čo zjednodušuje ukladanie, porovnávanie a matematické operácie.
JavaScript pracuje interne s milisekundami, takže Date.now() vracia Unix timestamp vynásobený číslom 1000. Mnohé API, databázy a backendové systémy namiesto toho používajú sekundy. Tento nástroj akceptuje oba formáty a automaticky detekuje sekundy alebo milisekundy podľa veľkosti zadaného čísla.
Významné Unix timestampy
| Timestamp | Dátum (UTC) | Poznámka |
|---|---|---|
0 | 1970-01-01 00:00:00 | Unix epoch |
1,000,000,000 | 2001-09-09 01:46:40 | 1 miliarda sekúnd |
2,000,000,000 | 2033-05-18 03:33:20 | 2 miliardy sekúnd |
2,147,483,647 | 2038-01-19 03:14:07 | Problém roku 2038 (max 32-bit) |
Prečo práve rok 1970?
Unix epoch 1. januára 1970 bol vybraný čiastočne dohodou a čiastočne praktickými obmedzeniami. Unix bol vyvinutý koncom 60. rokov a začiatkom 70. rokov v Bell Labs. Vývojári potrebovali nedávny, okrúhly dátum začiatku pre svoju reprezentáciu času. 1. január 1970 bol dostatočne nedávny na to, aby bol praktický, a nemал žiadny osobitný technický významý — bol to jednoducho vhodný referenčný bod.
Iné systémy používajú alternatívne epoch dátumy: Windows FILETIME epoch je 1. január 1601, GPS čas začína 6. januárom 1980, NTP epoch je 1. január 1900. Pri konverzii medzi systémami je poznanie epoch každého systému nevyhnutné.
Sekundy vs milisekundy
Pôvodný Unix timestamp je v sekundách. Väčšina serverovských jazykov a systémov (Unix shell, time.time() v Pythone, time() v PHP, väčšina databáz) používa sekundy. JavaScript Date.now() a new Date().getTime() vracajú milisekundy. Tento nesúlad je častým zdrojom chýb, keď frontendové aplikácie komunikujú s backendovými API.
Unix timestamp v sekundách je v súčasnosti 10-ciferné číslo (okolo 1 700 000 000 k roku 2023). Timestamp v milisekundách je 13-ciferné číslo. Kalkulačka detekuje, ktorý formát ste zadali, na základe počtu číslic a príslušne konvertuje.
Problém roku 2038
Systémy, ktoré ukladajú Unix timestampy ako celé číslo so znamienkom na 32 bitoch, môžu reprezentovať len dátumy do 2,147,483,647 sekúnd od epochu — čo je 03:14:07 UTC 19. januára 2038. Po tomto momente sa 32-bitové celé číslo so znamienkom pretečie na veľké záporné číslo, ktoré reprezentuje dátum z roku 1901.
Niekedy sa to nazýva problém „Y2K38" alebo Unix Millennium Bug. Moderné 64-bitové systémy sú ním nezasiahnuté, pretože 64-bitové celé číslo so znamienkom môže reprezentovať timestampy zhruba na 292 miliárd rokov. Avšak vstavané systémy, staré databázy a staršie 32-bitové softvéry môžu byť ešte zraniteľné. Mnohé odvetvia — vrátane telekomunikácií, bankách a priemyselných riadiacich systémov — majú prebiehajúce migračné úsilia na riešenie tohto problému.
Ako získať aktuálny Unix timestamp
| Jazyk / prostredie | Príkaz |
|---|---|
| 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() |
Praktické použitie
Vývoj API: REST API bežne používajú Unix timestampy pre polia created_at, updated_at a expirácii tokenov. Timestamp je nezávislý od časového pásma a jednoznačný — na rozdiel od formátovaných reťazcov dátumov, ktoré závisia od lokalizácie a konvencií formátovania.
Expirácia tokenu: JWT (JSON Web Tokens) používajú Unix timestampy pre claims exp (expirácii) a iat (čas vydania). Token expiruje, keď aktuálny timestamp prekročí hodnotu exp. Výpočet času expirácii — „tento token by mal expirovat za 24 hodín" — vyžaduje pridanie 86 400 sekúnd k aktuálnemu timestampu.
Cache TTL: Expirácia cache sa často nastavuje ako Unix timestamp alebo ako počet sekúnd od teraz. Ladenie problémov s cache často vyžaduje konverziu uloženého timestampu expirácii na čitateľný dátum.
Analýza logov: Serverové logy často obsahujú Unix timestampy. Ich konverzia na čitateľné dátumy je prvý krok pri korelácii položiek logu so skutočnými udalosťami.
Ukladanie do databázy: Ukladanie timestampov ako celých čísel namiesto formátovaných reťazcov sa vyhýba chybám pri konverzii časových pásiem a zjednodušuje triedenie, dopyty na rozsahy a matematické operácie. Dopyt pre „všetky záznamy z posledných 7 dní" sa stane WHERE created_at > (NOW_UNIX - 604800).
Často kladené otázky
Čo je Unix timestamp?
Unix timestamp je počet sekúnd, ktoré uplynuli od 1. januára 1970, 00:00:00 UTC — referenčného bodu nazývaného Unixová epocha. Reprezentuje ľubovoľný okamih ako jedno celé číslo, vďaka čomu sa ľahko ukladá, porovnáva a počíta s ním. Je to štandardný časový formát používaný vo väčšine operačných systémov, databáz, API a programovacích jazykov.
Ako prevediem Unix timestamp na dátum?
Zadajte timestamp do konvertora a ten vráti zodpovedajúci dátum a čas v UTC aj vo vašom lokálnom časovom pásme. Nástroj automaticky rozpozná, či ste zadali sekundy (10-ciferné číslo) alebo milisekundy (13-ciferné číslo). Môžete to spraviť aj opačne: vyberte dátum a čas a získate príslušný Unix timestamp.
Aký je rozdiel medzi Unix časom v sekundách a v milisekundách?
Pôvodný Unix timestamp je v sekundách. Väčšina serverových systémov — PHP, Python, Go, Bash, SQL databázy — používa sekundy. JavaScriptové Date.now() a new Date().getTime() vracajú milisekundy (Unix sekundy × 1000). Timestamp v sekundách má dnes 10 číslic; v milisekundách 13 číslic. Zámena týchto dvoch je častá chyba, keď JavaScriptový frontend pošle timestamp backendu, ktorý očakáva sekundy.
Prečo Unix čas začína 1. januára 1970?
Tento dátum vybrali vývojári Unixu v Bell Labs na začiatku 70. rokov ako praktický, relatívne „nedávny“ počiatočný bod. Nemá žiadny špeciálny význam okrem toho, že ide o okrúhly dátum blízky dobe vzniku systému. Iné systémy používajú iné epochy: Windows FILETIME začína 1. januára 1601; GPS čas začína 6. januára 1980; NTP začína 1. januára 1900.
Čo je problém roku 2038?
Systémy, ktoré ukladajú Unix timestamp ako podpísané 32-bitové celé číslo, vedia reprezentovať dátumy len do 19. januára 2038 (timestamp 2 147 483 647). Potom hodnota pretečie na veľké záporné číslo, ktoré reprezentuje dátum v roku 1901. Moderné 64-bitové systémy tým nie sú ovplyvnené. Staršie embedded systémy, staršie databázy a 32-bitový softvér však môžu byť stále zraniteľné a vyžadujú migráciu pred týmto dátumom.
Ako získam aktuálny Unix timestamp v mojom programovacom jazyku?
JavaScript: Math.floor(Date.now() / 1000). Python: import time; int(time.time()). PHP: time(). Bash: date +%s. PostgreSQL: EXTRACT(EPOCH FROM NOW())::int. MySQL: UNIX_TIMESTAMP(). Go: time.Now().Unix(). Všetky tieto príkazy vracajú aktuálny čas ako počet sekúnd od Unixovej epochy.