Mikä on Unix -aika ja milloin Unix -aikakausi?

Mikä on Unix -aika ja milloin Unix -aikakausi?

Miksi Unixilla on oma ajankäsitys? Mikä on aikakausi ja mikä on Y2038 -ongelma?





Unix -aika edustaa tiettyä päivämäärää ja kellonaikaa, jota käyttävät Linux, macOS ja monet muut yhteentoimivat järjestelmät. Se on niin laajalle levinnyt, että käytät sitä todennäköisesti tietämättäsi. Kun ymmärrät Unix -ajan, huomaat sen kuitenkin monissa yhteyksissä. Useat työkalut voivat auttaa sinua työskentelemään Unix -ajan kanssa.





Mikä on Unix -ajan tarkoitus?

Unix -aika on sekuntien kokonaismäärä kiinteän ajan ja päivämäärän jälkeen. Se on päivämäärä/aika (tai aikaleima) -muoto, joka näyttää erilaiselta kuin ihmisten luettavissa olevat päivämäärät ja ajat, joihin olemme tottuneet. Tämä johtuu puhtaasti tehokkuussyistä. Yhden sekunnin edustavan numeron tallentaminen vie paljon vähemmän tilaa kuin erillisten arvojen tallentaminen vuodelle, kuukaudelle, tunnille jne.





Tietysti nykyaikana avaruusero ei ole ollenkaan niin suuri. Ota huomioon, että Unix on peräisin 1960 -luvun lopulta, jolloin käytettävissä oleva tallennustila oli paljon pienempi. Aikaleimoja käytetään myös paljon, joten niiden tallennustila kasvaa. Esimerkiksi jokaiseen tiedostoon liittyy kolme aikaleimaa.

Muotoa on melko mahdotonta kääntää päässäsi, ellet ole matemaattinen nero. Mutta sillä on silti joitain etuja verrattuna luettavampiin vaihtoehtoihin, kuten Ke, 21. lokakuuta 2015 07:28:00 GMT . Voit tilata kaksi Unix -aikaleimaa erittäin helposti yhdellä silmäyksellä. On myös yleensä nopeampaa selvittää ero kahden aikaleiman välillä. Tämä pätee erityisesti lähellä oleviin päivämääriin, kuten viereisiin päiviin.



Tietoja aikakaudesta

Unix -aika on siis sekuntien kokonaismäärä tietyn ajankohdan jälkeen. Mutta mikä on se ajankohta? Sen 00:00:00 UTC päällä 1. tammikuuta 1970 . Tätä kutsutaan usein Unix Epochiksi. Ohjelmoijat valitsivat tämän ajanjakson ajan mukavuuden vuoksi, koska se oli lähin kierrospäivä, jolloin he keksivät Unix -ajan.

Olet ehkä nähnyt tämän päivämäärän, kun jotain on mennyt pieleen. Se on selvästi vika, mutta se näyttää erittäin oudolta, kun se johtaa päivämäärään ennen sitä aikaa, kun monet meistä syntyivät! Se on kuitenkin täysin ymmärrettävää, kun tiedät Unix -ajasta. Jos jokin järjestelmä yrittää näyttää aikaleiman, jolla ei ole arvoa, se kääntyy usein 0: ksi ja johtaa täsmälleen aikakausille.





työpöydän sääwidget Windows 10: lle

Unix Time Data Format

Tarkkaan ottaen sitä ei ole. Alkuperäinen tietotyyppi oli 32-bittinen kokonaisluku, ja näin on usein myös paljon tehokkaammissa järjestelmissä.

Tämän tietotyypin avulla arvo voi tallentaa yhteensä 2^32 sekuntia, mikä on hieman yli 136 vuotta. Tämä arvo on tyypillisesti allekirjoitettu, mikä tarkoittaa, että se voi olla negatiivinen tai positiivinen. Joten se edustaa yleensä 68 vuotta aikakauden kummallakin puolella eli 1902-2038.





Tämä on tietysti vielä rajoitettu aika. Aikaleimaformaatin ensisijainen käyttö oli kuitenkin käsitteitä, kuten tiedoston muokkaaminen. Tarve oli edustaa aika lähellä nykyhetkeä eikä muinaista historiaa tai kauas tulevaisuutta. Jopa sovelluksissa, kuten kalentereissa, on harvoin tarvetta esittää päivämääriä yli muutaman vuosikymmenen päästä.

Mutta se ei tarkoita, että tämä rajoitettu aika ei olisi ongelmaton ...

Vuoden 2038 ongelma

Y2K-virhe (yksi historian pahimmista ohjelmointivirheistä) vaikutti tietokonejärjestelmiin, jotka tallensivat vuosia kaksinumeroisina arvoina. Kun vuosi 2000 tuli, tällaiset järjestelmät kohtelivat sitä ikään kuin se olisi 1900. Tapahtumassa tämä ei ollut niin katastrofaalista kuin pelättiin lähinnä siksi, että monet ihmiset viettivät paljon aikaa ja vaivaa etukäteen valmistautuessaan siihen.

Jos kiinnitit huomiota edelliseen osaan, olet ehkä havainnut samanlaisen ongelman, joka voi vaikuttaa Unix -aikaan. No, Unix -ajalla on oma dataongelma: Y2k38 -ongelma. (Sitä kutsutaan usein ongelmaksi, ei vikaksi; ehkä olemme tulleet optimistisemmiksi vuodesta 2000 lähtien!) Kun Unix -aika loppuu kirjaimellisesti vuonna 2038, järjestelmät käsittelevät uusia päivämääriä joko 1902 tai 1970. Tai mahdollisesti Epäonnistuu vain kokonaan.

Tämä ongelma ei ainakaan osu meihin uudenvuodenaattona keskiyön aikaan. 32-bittisen Unix-ajan viimeinen sekunti putoaa 19. maaliskuuta. Jos mahdollista, päivitämme useimmat järjestelmät vuoteen 2038 mennessä, tai ne ovat kuitenkin vanhentuneita.

Hyödyllisiä aikaleimaresursseja

The Epoch Converter sivusto on ehkä kattavin saatavilla oleva aikaleiman muunnin. Se alkaa näyttämällä nykyisen Unix-ajan-reaaliajassa-ja lisää melkein kaikki kuviteltavissa olevat ominaisuudet sen päälle. Sen pääasiallinen käyttötarkoitus on muuntaa aikaleimojen ja ihmisen luettavissa olevien päivämäärien välillä molempiin suuntiin.

Dan's Tools on valtava kokoelma hyödyllisiä verkkosovelluksia, joista yksi on aikaleiman muunnin . Se on yksinkertaisempi, mutta siinä on erittäin puhdas esitys ja se on helppokäyttöinen.

Kello on esittelee toisen, vieläkin minimalistisemman ilmeen. Se näyttää ajan useissa muodoissa, mukaan lukien Unix -aika. Se sisältää nykyisen ajan sivun otsikossa, mikä on hyödyllistä.

Unix Time -sovelluksen käyttäminen komentorivityökaluilla

Linux- ja macOS -käyttöjärjestelmissä Päivämäärä ohjelma on keskeinen apuohjelma päivämäärän ja kellonajan käsittelyyn, mukaan lukien Unix -aikaleimat. Kutsutaan ilman argumentteja, se palauttaa nykyisen päivämäärän/ajan ihmisen luettavassa muodossa:

$ date
Wed Feb 10 12:28:30 GMT 2021

Jos tarvitset nykyisen päivämäärän/kellonajan Unix -kellonaikana, käytä +%s Perustelu:

$ date +%s
1612960114

Voit muuntaa ihmisen luettavan päivämäärän aikaleimaksi käyttämällä -d lippu, jos oma versio Päivämäärä tukee sitä. Useimpien Linux -versioiden pitäisi oletusarvoisesti:

$ date -d 'Jan 2 1970' +%s
82800

MacOS: ssa Päivämäärä on erilainen ohjelma, joka vaatii erilaiset liput:

$ date -j -f '%b %d %Y %T' 'Jan 02 1970 00:00:00' '+%s'
82800

Jos siirryt toiseen suuntaan, voit muuntaa Unix -aikaleimasta käyttämällä -r lippu:

$ date -r 1600000000
Sun 13 Sep 2020 13:26:40 BST

Jotkut muut ohjelmat käyttävät %s muotoon Unix -ajan kanssa. Jos haluat esimerkiksi näyttää tiedoston muokkauspäivämäärän Unix -kellonaikana, näppäimellä Linux -versio ls , voit käyttää seuraavia:

$ ls -l --time-style=+%s index.tmp.html
-rw-r--r-- 1 ubuntu ubuntu 17862 1521649818 index.tmp.html

Kuinka käyttää Unix -aikaa ohjelmointikielillä

PHP: llä on aika() toiminto, joka palauttaa nykyisen Unix -aikaleiman. Sen Päivämäärä() funktio ottaa aikaleiman toiseksi argumentiksi:

$ php -r 'echo date('Y-m-d', time());'
2021-02-11

JavaScript lähestyy asioita mielenkiintoisella tavalla. Sillä on Date.now () menetelmä millisekuntien lukumäärän saamiseksi Unix -aikakauden jälkeen. Voit tietysti jakaa tämän tuhannella ja pyöristää tuloksen saadaksesi vastaavan Unix -ajan sekunneissa:

> Math.floor(Date.now() / 1000)
1613083012

Unix -ajan ymmärtäminen

Unix -aika on yksinkertainen käsite, joka esiintyy monissa paikoissa. Kun olet ymmärtänyt sen, se saattaa olla hyödyllistä esimerkiksi laskettaessa aikaeroja. Voit myös tunnistaa, milloin se voi olla syynä tiettyihin virheisiin.

Käsitteet, kuten aikakausi ja aikaleimat, ovat tärkeä osa Linuxin käytön aloittamista. Lisätietoja olennaisista asioista, kuten ls , tutustu oppaaseemme Linux -peruskomennoista.

Jaa Jaa Tweet Sähköposti 9 peruskomentoa Linuxin käytön aloittamiseen

Haluatko tutustua Linuxiin? Aloita näillä Linux -peruskomennoilla oppiaksesi tavanomaisia ​​laskentatehtäviä.

Lue seuraava
Liittyvät aiheet Kirjailijasta Bobby Jack(58 artikkelia julkaistu)

Bobby on teknologian harrastaja, joka työskenteli ohjelmistokehittäjänä lähes kaksi vuosikymmentä. Hän on intohimoinen pelaamisesta, työskentelee Switch Editor Magazine -lehden arvostelutoimittajana ja on upotettu kaikkeen verkkojulkaisemiseen ja -kehitykseen.

Lisää Bobby Jackilta

tilaa uutiskirjeemme

Liity uutiskirjeeseemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia ​​e -kirjoja ja ainutlaatuisia tarjouksia!

Klikkaa tästä tilataksesi