Unix-tidsstämpel till datum-konverterare
Konvertera en Unix-tidsstämpel till ett läsbart datum och en tid — eller valfritt datum tillbaka till en Unix-tidsstämpel. Stöder sekunder och millisekunder.
Dela det här verktyget
Bädda in på din webbplats
Relaterade verktyg
Vad är en Unix-tidsstämpel?
En Unix-tidsstämpel, även kallad Unix time eller POSIX time, är antalet sekunder som har gått sedan 1970-01-01 00:00:00 UTC, känt som Unix-epoken. Det är en allmänt använd standard inom datavetenskap eftersom det representerar en tidpunkt som ett enda heltal, vilket gör lagring, jämförelse och räkneoperationer enkla.
JavaScript arbetar internt med millisekunder, så Date.now() returnerar Unix-tidsstämpeln multiplicerad med 1000. Många API:er, databaser och backend-system använder sekunder istället. Det här verktyget accepterar båda formaten och detekterar automatiskt sekunder eller millisekunder baserat på storleken på det tal du anger.
Märkvärd Unix-tidsstämplar
| Tidsstämpel | Datum (UTC) | Anmärkning |
|---|---|---|
0 | 1970-01-01 00:00:00 | Unix-epoken |
1,000,000,000 | 2001-09-09 01:46:40 | 1 miljard sekunder |
2,000,000,000 | 2033-05-18 03:33:20 | 2 miljarder sekunder |
2,147,483,647 | 2038-01-19 03:14:07 | År 2038-problemet (max 32-bitars) |
Varför 1970?
Unix-epoken den 1 januari 1970 valdes delvis enligt konvention och delvis på grund av praktiska begränsningar. Unix utvecklades i slutet av 1960-talet och början av 1970-talet på Bell Labs. Utvecklarna behövde ett närliggande, rundt startdatum för sin tidsrepresentation. Den 1 januari 1970 var tillräckligt nära för att vara praktiskt och hade ingen särskild teknisk betydelse — det var helt enkelt en bekväm utgångspunkt.
Alternativa epokdatum finns i andra system: Windows FILETIME-epoken är den 1 januari 1601; GPS-tid började den 6 januari 1980; NTP-epoken är den 1 januari 1900. När du konverterar mellan system är det viktigt att känna till varje systems epok.
Sekunder mot millisekunder
Den ursprungliga Unix-tidsstämpeln är i sekunder. De flesta serverspråk och system (Unix shell, Pythons time.time(), PHP:s time(), de flesta databaser) använder sekunder. JavaScripts Date.now() och new Date().getTime() returnerar millisekunder. Den här skillnaden är en vanlig orsak till buggar när JavaScript-gränssnitt kommunicerar med backend-API:er.
En Unix-tidsstämpel i sekunder är för närvarande ett 10-siffrigt tal (omkring 1 700 000 000 från och med 2023). En millisekund-tidsstämpel är ett 13-siffrigt tal. Kalkylatorn detekterar vilket format du har angett baserat på antalet siffror och konverterar motsvarande.
År 2038-problemet
System som lagrar Unix-tidsstämplar som ett signerat 32-bitars heltal kan bara representera datum upp till 2,147,483,647 sekunder efter epoken — vilket är 03:14:07 UTC den 19 januari 2038. Efter det tillfället överflödar ett signerat 32-bitars heltal till ett stort negativt tal, vilket representerar ett datum 1901.
Detta kallas ibland "Y2K38"-problemet eller Unix Millennium Bug. Moderna 64-bitars system påverkas inte, eftersom ett signerat 64-bitars heltal kan representera tidsstämplar under cirka 292 miljarder år. Inbyggda system, äldre databaser och äldre 32-bitars programvara kan dock fortfarande vara sårbara. Många branscher — inklusive telekommunikation, bankväsen och industriell styrteknik — har pågående migreringsarbete för att hantera detta.
Hur du får den aktuella Unix-tidsstämpeln
| Språk / miljö | Kommando |
|---|---|
| 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() |
Praktiska användningar
API-utveckling: REST-API:er använder vanligen Unix-tidsstämplar för fälten created_at, updated_at och token-utgång. En tidsstämpel är tidszonsagnostisk och entydig — till skillnad från formaterade datumsträngar, som är beroende av språkväxling och formateringskonventioner.
Token-utgång: JWT (JSON Web Tokens) använder Unix-tidsstämplar för anspråken exp (utgång) och iat (utfärdad). En token utgår när den aktuella tidsstämpeln överstiger värdet exp. Beräkning av utgångstider — "denna token ska utgå om 24 timmar" — kräver att man lägger till 86 400 sekunder till den aktuella tidsstämpeln.
Cache TTL: Cache-utgång ställs ofta in som en Unix-tidsstämpel eller som ett antal sekunder från nu. Felsökning av cache-problem kräver ofta att en lagrad utgångstidsstämpel konverteras till ett läsbart datumformat.
Logganalys: Serverloggar innehåller ofta Unix-tidsstämplar. Att konvertera dem till läsbara datum är det första steget för att korrelera loggposter med verkliga händelser.
Databaslagring: Att lagra tidsstämplar som heltal i stället för formaterade strängar undviker tidszonkonverteringsfel och förenklar sortering, intervallförfrågningar och räkneoperationer. En fråga om "alla poster från de senaste 7 dagarna" blir WHERE created_at > (NOW_UNIX - 604800).
Relaterade artiklar
Unix-tidsstämpel: sekunder vs millisekunder och buggarna de orsakarMismashen mellan sekunder och millisekunder (JavaScript vs de flesta backend-system) är en av de vanligaste tidsstämpelbuggarna i webbutveckling. Så här ser den ut och så fixar du den.
Epoch Time i API:er och loggar förklarat – Hur man läser och konverterar rättEpoch time förekommer överallt i API:er, databaser och loggar, men är lätt att missförstå. Den här guiden förklarar vad epoch time betyder, varför system använder det och hur man konverterar det utan vanliga misstag.