Nykyinen Unix-aikaleima (epoch-aika)
Unix-aikaleimamuunnin
Muunna epoch-aika luettavaksi päivämääräksi tai päivämäärä Unix-aikaleimaksi. Sekunnit ja millisekunnit tunnistetaan automaattisesti.
Aikaleima → Päivämäärä
Päivämäärä → Aikaleima
Mikä on Unix-aikaleima?
Unix-aikaleima (myös epoch-aika, POSIX-aika tai Unix-aika) on hetkestä 1. tammikuuta 1970 klo 00:00:00 UTC kuluneiden sekuntien määrä — tätä hetkeä kutsutaan Unix-epookiksi. Jokainen vuorokausi on täsmälleen 86 400 sekuntia, ja karkaussekunnit jätetään huomiotta.
Koska se on yksi kokonaisluku ilman aikavyöhykettä, kesäaikasääntöjä tai muotoiluepäselvyyksiä, se on tietokoneiden vakiotapa tallentaa ja vaihtaa ajanhetkiä. Tietokannat, lokitiedostot, rajapinnat ja käyttöjärjestelmät käyttävät sitä sisäisesti; luettava päivämäärä muodostetaan vasta näytettäessä, lukijan tarvitsemassa aikavyöhykkeessä.
Unix-aika sekunteina tai millisekunteina
Saman hetken voi ilmaista eri tarkkuuksilla. Numeroiden määrästä näkee yleensä, mistä on kyse:
| Yksikkö | Numerot (nyt) | Esimerkki | Tyypillinen lähde |
|---|---|---|---|
| sekunnit | 10 | 1758700800 | Unix-työkalut, PHP, MySQL, Python time.time() |
| millisekunnit | 13 | 1758700800000 | JavaScript Date.now(), Java |
| mikrosekunnit | 16 | 1758700800000000 | Tarkkuuslokitus |
| nanosekunnit | 19 | 1758700800000000000 | Go UnixNano(), jäljitysjärjestelmät |
Vuoden 2038 ongelma
Järjestelmät, jotka tallentavat Unix-ajan etumerkillisenä 32-bittisenä kokonaislukuna, ylivuotavat 19. tammikuuta 2038 klo 03:14:07 UTC (aikaleima 2 147 483 647). Sekuntia myöhemmin laskuri muuttuu negatiiviseksi, ja tällaiset järjestelmät tulkitsevat sen joulukuuksi 1901. Nykyaikaiset 64-bittiset järjestelmät eivät ole vaarassa — 64-bittinen laskuri riittää noin 292 miljardia vuotta — mutta vanhat sulautetut laitteet, vanhentuneet tiedostomuodot ja 32-bittisiä kenttiä käyttävät tietokannat vaativat yhä huomiota.
Nykyisen Unix-aikaleiman haku koodissa
Sekunteina, ellei toisin mainita.
# Shell date +%s # JavaScript (ms → s) Math.floor(Date.now() / 1000) # Python import time; int(time.time()) # Perl time # PHP time() # MySQL SELECT UNIX_TIMESTAMP(); # C# DateTimeOffset.UtcNow.ToUnixTimeSeconds() # Swift Int(Date().timeIntervalSince1970) # Kotlin / Java System.currentTimeMillis() / 1000
Unix-aikaleiman muuntaminen päivämääräksi koodissa
# Shell (GNU/Linux) date -u -d @1700000000 # Shell (macOS/BSD) date -u -r 1700000000 # JavaScript (ms) new Date(1700000000 * 1000).toISOString() # Python from datetime import datetime, timezone datetime.fromtimestamp(1700000000, tz=timezone.utc) # Perl scalar gmtime(1700000000) # PHP gmdate('Y-m-d H:i:s', 1700000000) # MySQL SELECT FROM_UNIXTIME(1700000000); # C# DateTimeOffset.FromUnixTimeSeconds(1700000000).UtcDateTime # Swift Date(timeIntervalSince1970: 1700000000) # Kotlin / Java java.time.Instant.ofEpochSecond(1700000000)
Merkittäviä Unix-aikaleimoja
Pyöreitä lukuja ja virstanpylväitä, joihin kehittäjät törmäävät lokeissa, testidatassa ja vikailmoituksissa. Kaikki ajat UTC-aikaa.
| Aikaleima | Päivämäärä (UTC) | Miksi se on tärkeä |
|---|---|---|
| 0 | 1970-01-01 00:00:00 | Itse Unix-epookki. Vuoden 1970 päivämäärä tarkoittaa yleensä puuttuvaa tai nolla-arvoa. |
| 1000000000 | 2001-09-09 01:46:40 | Ensimmäinen 10-numeroinen aikaleima (”billennium”). |
| 1234567890 | 2009-02-13 23:31:30 | Peräkkäiset numerot, joita kehittäjät juhlivat ympäri maailmaa. |
| 1500000000 | 2017-07-14 02:40:00 | 1,5 miljardia sekuntia. |
| 1700000000 | 2023-11-14 22:13:20 | 1,7 miljardia sekuntia. |
| 2000000000 | 2033-05-18 03:33:20 | 2 miljardia sekuntia. |
| 2147483647 | 2038-01-19 03:14:07 | Suurin etumerkillinen 32-bittinen arvo — vuoden 2038 ongelma. |
Näin muunnat Unix-aikaleiman
Aikaleimasta päivämääräksi: liitä luku yllä olevaan muuntimeen. Yksikkö tunnistetaan pituudesta — 10 numeroa on sekunteja, 13 millisekunteja — ja tulos näytetään UTC-aikana, paikallisessa aikavyöhykkeessäsi ja suhteellisena aikana. Ei rekisteröitymistä, mikään ei poistu selaimestasi.
Päivämäärästä aikaleimaksi: valitse päivämäärä ja kellonaika, kerro tulkitaanko ne paikalliseksi ajaksi vai UTC-ajaksi, ja saat arvon sekunteina ja millisekunteina — valmiina SQL-kyselyihin, tunnisteiden vanhenemisaikoihin tai rajapintaparametreihin.
Nopea tarkistus vianetsinnässä: jos päivämäärä näkyy datassasi tammikuuna 1970, olet lähes varmasti käsitellyt sekunteja millisekunteina (tai saanut arvon 0/null). Jos se on kymmeniätuhansia vuosia tulevaisuudessa, olet tehnyt päinvastoin.
Usein kysyttyä
Onko Unix-aikaleima sekunteina vai millisekunteina?
Kumpikin on yleinen. 10-numeroinen arvo on sekunteja (Unix-työkalut, PHP, MySQL, Python), 13-numeroinen millisekunteja (JavaScript, Java). Jaa luvulla 1 000 siirtyäksesi millisekunneista sekunteihin.
Riippuuko Unix-aika aikavyöhykkeestä?
Ei. Unix-aika lasketaan aina UTC-aikana, joten samalla hetkellä on sama aikaleima kaikkialla maailmassa. Aikavyöhyke vaikuttaa vasta, kun aikaleima muotoillaan luettavaksi päivämääräksi.
Sisältävätkö Unix-aikaleimat karkaussekunnit?
Eivät. Jokainen vuorokausi on täsmälleen 86 400 sekuntia. Karkaussekunnin sattuessa käyttöjärjestelmät toistavat sen tai ”levittävät” sen, joten Unix-aika pysyy siistinä, jatkuvana laskurina.
Voiko Unix-aikaleima olla negatiivinen?
Voi. Negatiiviset arvot tarkoittavat hetkiä ennen 1. tammikuuta 1970. Esimerkiksi -86400 on 31. joulukuuta 1969 klo 00:00 UTC. Kaikki järjestelmät eivät käsittele negatiivisia aikaleimoja oikein, joten testaa ennen kuin luotat niihin.
Miten saan nykyisen Unix-aikaleiman?
Suorita date +%s Linux- tai macOS-päätteessä, kutsu Math.floor(Date.now() / 1000) JavaScriptissä tai int(time.time()) Pythonissa. Esimerkkejä muille kielille löytyy yllä.
Mikä aikaleima on ”nyt”?
Tämän sivun yläosan reaaliaikainen laskuri — se päivittyy sekunnin välein ja kopioituu yhdellä napsautuksella.
Lisää ilmaisia kehittäjätyökaluja
Sama idea: nopeita, ilmaisia ja kaikki toimii selaimessasi.