CodeKitHub
Aikatyökalut

Unix-aikaleiman muunnin

Viimeksi päivitetty:

Unix-aikaleima laskee sekunnit 1. tammikuuta 1970 klo 00:00:00 UTC:sta lähtien — aikaleima 1 000 000 000 osui esimerkiksi 9. syyskuuta 2001. Muunna Unix-aikaleima luettavaksi päivämääräksi, tai valitse päivämäärä ja saa sen aikaleima. Työkalu tunnistaa automaattisesti sekunnit vs. millisekunnit, näyttää paikallisen ajan, UTC:n ja ISO 8601:n, ja näyttää ylhäällä reaaliaikaisesti tikittävän epoch-kellon.

Current timestamp (seconds)
Current timestamp (milliseconds)

Timestamp → Date

Date → Timestamp

Mikä tämä työkalu on?

Unix-aikaleima (myös epoch-aika) on sekuntien määrä 1. tammikuuta 1970 klo 00:00:00 UTC:sta lähtien. Se on tietokoneiden vakiotapa tallentaa ajanhetkiä: tietokannat, lokitiedostot, API:t ja ohjelmointikielet käyttävät sitä kaikki, koska se on yksi yksiselitteinen luku ilman aikavyöhykesekaannusta.

Kaksi muotoa on olemassa: sekunnit (10 numeroa nykyään, esim. 1720500000) ja millisekunnit (13 numeroa, joita JavaScript ja Java käyttävät). Tämä työkalu tunnistaa automaattisesti kumman liitit.

Miksi käyttää sitä?

  • Lue aikaleimoja lokeista, tietokantariveistä ja API-vastauksista välittömästi.
  • Tunnistaa automaattisesti sekunnit vs. millisekunnit — ei arvailua.
  • Näyttää paikallisen ajan, UTC:n, ISO 8601:n ja suhteellisen ajan ("3 tuntia sitten") yhdessä.
  • Muunna molempiin suuntiin: aikaleima → päivämäärä ja päivämäärä → aikaleima.
  • Reaaliaikainen nykyhetken epoch-kello nopeaa tarkistusta varten.

Käyttöohje

  1. Purkaaksesi: liitä aikaleima (kuten 1720500000) vasempaan kenttään ja klikkaa "Muunna".
  2. Lue tulos paikallisessa aikavyöhykkeessäsi, UTC:na, ISO 8601:na ja suhteellisena aikana.
  3. Koodataksesi: valitse päivämäärä ja aika oikeasta kentästä ja klikkaa "Muunna" saadaksesi sen aikaleiman sekunteina ja millisekunteina.
  4. Käytä ylhäällä olevaa reaaliaikaista kelloa, kun tarvitset vain nykyisen aikaleiman.

Esimerkki

Syöte

1720500000

Tuloste

Paikallinen aika: 9.7.2024, 13:20:00
UTC-aika:   ti, 09 heinä 2024 05:20:00 GMT
ISO 8601:   2024-07-09T05:20:00.000Z

10-numeroinen arvo käsitellään sekunteina; 13-numeroinen millisekunteina.

Käytännön vinkkejä

  • "Väärän ajan" bugien selvittäminen: 90 % on aikavyöhykkeen näyttöongelmia, ei vääriä aikaleimoja. Vertaa UTC-riviä palvelimesi lokeihin (palvelimet yleensä kirjaavat UTC:ssa) ennen kuin kosket koodiin.
  • Päivämäärä, joka osuu tarkalleen 1970-01-01, tarkoittaa, että aikaleima oli 0 tai puuttui — klassinen null-arvo-oire, ei todellinen päivämäärä.
  • Vuoden 1970 tienoilla oleva päivämäärä muutaman päivän päässä tarkoittaa yleensä, että sekunnit tulkittiin jossain millisekunneiksi; vuoden 56 000+ päivämäärä tarkoittaa päinvastaista.
  • Taulukkolaskennassa: Excel laskee päiviä vuodesta 1900, ei sekunteja vuodesta 1970. Muunna kaavalla =(A1/86400)+DATE(1970,1,1) sekunti-aikaleimalle.

Todellisia käyttötilanteita

Missä aikaleimat aiheuttavat harmia käytännössä: JWT- ja API-tokenien vanhenemiskenttien lukeminen (exp/iat ovat Unix-sekunteja), käyttäjän vikailmoituksen ajan yhdistäminen palvelinlokin riveihin, välimuistin TTL:ien ja cron-ikkunoiden asettaminen, sekä sen tarkistaminen, onko sertifikaatti tai token todella vanhentunut. Suhteellisen ajan rivi ("3 tuntia sitten") on nopein järkevyystarkistus kaikkiin näihin.

JWT-debuggaus on tarpeeksi yleistä mainita erikseen: pura tokenin hyötykuorma Base64-työkalulla ja liitä sitten exp-arvo tänne — välitön vastaus kysymykseen "onko tämä token vanhentunut ja kuinka paljon".

Miksi Unix-aika suunniteltiin tällä tavalla

Yhden kasvavan luvun tallentaminen kiinteästä epochista lähtien (vuosi/kuukausi/päivä/tunti-rakenteen sijaan) oli tarkoituksellinen yksinkertaisuuden valinta: kahta aikaleimaa voi verrata tai vähentää tavallisella aritmetiikalla ilman kalenterilogiikkaa, minkä vuoksi tietokannat, lokiformaatit ja käytännössä jokaisen ohjelmointikielen sisäinen päivämääräesitys perustuvat siihen. Tämän yksinkertaisuuden hinta on juuri se, mitä tämä työkalu on olemassa tasoittamassa — ihmiset eivät ajattele sekunteina vuodesta 1970, joten jokainen aikaleima täytyy kääntää takaisin kalenteripäivämääräksi ennen kuin se merkitsee mitään sitä lukevalle ihmiselle, ja käännöksen täytyy huomioida aikavyöhyke, tarkkuus (sekunnit vs. millisekunnit) ja näyttömuoto kaikki kerralla.

Base64-koodain / -purkaja · Ikälaskuri

Usein kysytyt kysymykset

Miten työkalu tietää, onko aikaleimani sekunteina vai millisekunteina?

Koon perusteella. Arvot 1 000 000 000 000 (1e12) tai suuremmat käsitellään millisekunteina; pienemmät sekunteina. Nykyiset päivämäärät ovat noin 1,7 miljardia sekunteina ja noin 1 700 miljardia millisekunteina, joten nämä kaksi lukualuetta eivät mene päällekkäin realistisilla päivämäärillä.

Miksi aikaleimani näyttää eri tunnin kuin odotin?

Aikavyöhykkeet. Aikaleima on aina UTC-pohjainen; "paikallinen aika" -rivi muuntaa sen laitteesi aikavyöhykkeeseen. Vertaa UTC-riviä siihen, mitä lähdejärjestelmäsi kirjaa — monet palvelimet kirjaavat UTC:ssa.

Mikä on vuoden 2038 ongelma?

Järjestelmät, jotka tallentavat aikaleimoja 32-bittisinä etumerkillisinä kokonaislukuina, ylivuotavat 19. tammikuuta 2038. Nykyaikaiset järjestelmät käyttävät 64-bittisiä kokonaislukuja eivätkä kärsi tästä. Tämä työkalu käyttää JavaScriptin lukuja, jotka käsittelevät päivämääriä kauas vuoden 2038 jälkeenkin.

Voinko muuntaa negatiivisia aikaleimoja?

Kyllä. Negatiiviset aikaleimat edustavat päivämääriä ennen 1. tammikuuta 1970 — esimerkiksi -86400 on 31. joulukuuta 1969.

Sisältääkö epoch karkaussekunnit?

Ei. Unix-aika olettaa, että jokaisessa päivässä on tasan 86 400 sekuntia, ja jättää karkaussekunnit huomiotta — tarkoituksellinen yksinkertaistus, joka pitää laskutoimitukset helppoina.

Liittyvät työkalut