Što je Unix vrijeme i kada je bila Unix epoha?

Što je Unix vrijeme i kada je bila Unix epoha?

Zašto Unix ima vlastiti koncept vremena? Koja je epoha i koji je problem Y2038?





Unix vrijeme je sredstvo za predstavljanje određenog datuma i vremena koje koriste Linux, macOS i mnogi drugi interoperabilni sustavi. Toliko je raširen da ga vjerojatno koristite a da toga niste svjesni. Međutim, jednom kad shvatite Unix vrijeme, primijetit ćete ga u mnogim kontekstima. Nekoliko alata može vam pomoći u radu s Unix vremenom.





Koja je svrha Unix vremena?

Unix vrijeme je ukupan broj sekundi od fiksnog vremena i datuma. To je format datuma/vremena (ili vremenske oznake) koji izgleda drugačije od datuma i vremena čitljivih za ljude na koje smo navikli. To je čisto iz razloga učinkovitosti. Za pohranu jednog broja koji predstavlja sekunde potrebno je mnogo manje prostora nego za pohranu zasebnih vrijednosti za godinu, mjesec, sat itd.





Naravno, u modernim terminima, razlika u prostoru uopće nije toliko velika. No uzmite u obzir da je Unix nastao kasnih 1960 -ih kada je raspoloživo skladište bilo daleko manje. Vremenske oznake također se često koriste pa se njihova pohrana zbraja. Na primjer, svaka datoteka ima tri vremenske oznake povezane s njom.

Format je prilično nemoguće prevesti u glavi ako niste matematički genij. No i dalje ima neke prednosti u odnosu na čitljivije alternative kao što su Srijeda, 21. listopada 2015. 07:28:00 GMT . Vrlo jednostavno, na prvi pogled možete naručiti dvije vremenske oznake Unixa. Također je obično brže utvrditi razliku između dvije vremenske oznake. To osobito vrijedi za datume bliske zajedno, na primjer u susjedne dane.



O epohi

Dakle, vrijeme Unixa je ukupan broj sekundi od određenog trenutka. No, koji je to trenutak u vremenu? To je 00:00:00 UTC na Prvog siječnja 1970 . To se često naziva Unix epoha. Programeri su ovaj datum odabrali za epohu iz praktičnosti jer je to bio najbliži okrugli datum kada su izmislili Unix vrijeme.

Možda ste vidjeli ovaj datum kad je nešto pošlo po zlu. Očigledno je da je to greška, ali izgleda vrlo čudno kada rezultira datumom prije vremena kada smo mnogi od nas rođeni! Potpuno je razumljivo, kad znate za Unix vrijeme. Ako bilo koji sustav pokušava prikazati vremensku oznaku koja nema nikakvu vrijednost, često će se prevesti u 0 i rezultirati točnim datumom epohe.





najbolje besplatne tv aplikacije za android

Unix format podataka o vremenu

Strogo govoreći, ne postoji. Izvorni tip podataka bio je 32-bitni cijeli broj, a to često ostaje slučaj, čak i u mnogo moćnijim sustavima.

Ovaj tip podataka omogućuje pohranjivanje vrijednosti ukupno 2^32 sekunde, što je nešto više od 136 godina. Ova je vrijednost obično potpisana, što znači da može biti negativna ili pozitivna. Dakle, obično predstavlja 68 godina s obje strane epohe, tj. 1902-2038.





Ovo je, naravno, još uvijek ograničeno razdoblje. No primarno se format vremenske oznake koristio za koncepte poput izmjene datoteka. Velika je potreba bila predstavljati vrijeme blizu sadašnjosti, a ne drevne povijesti ili daleko u budućnost. Čak i za aplikacije kao što su kalendari, rijetko postoji potreba da se datumi predstavljaju više od nekoliko desetljeća u budućnosti.

Ali to ne znači da je ovaj ograničeni vremenski raspon bez problema ...

Problem iz 2038. godine

Y2K Bug (jedna od najgorih programskih grešaka u povijesti) utjecala je na računalne sustave koji su godine pohranili kao dvoznamenkaste vrijednosti. Kad je došla 2000. godina, takvi su sustavi to tretirali kao da je 1900. U svakom slučaju, to nije bilo tako katastrofalno koliko se strahovalo, uglavnom zato što su mnogi ljudi unaprijed potrošili puno vremena i truda pripremajući se za to.

Ako ste u prethodnom odjeljku obraćali pozornost, možda ste uočili sličan problem koji bi mogao utjecati na vrijeme Unixa. Pa, Unix vrijeme ima svoj problem s podacima: problem Y2k38. (Često se to naziva problemom, a ne greškom; možda smo postali optimističniji od 2000. godine!) Kad vrijeme za Unix doslovno istekne 2038., sustavi će nove datume tretirati kao 1902. ili 1970. Ili su vjerojatno ' samo ću potpuno propasti.

Barem nas ovaj problem neće pogoditi u ponoć na Silvestrovo. Posljednja sekunda 32-bitnog Unix vremena past će 19. ožujka. U budućnosti ćemo vjerojatno nadograditi većinu sustava do 2038. godine ili će do tada ionako zastarjeti.

Neki korisni resursi vremenske oznake

The Pretvarač epohe web mjesto je možda najopsežniji pretvarač vremenskih oznaka dostupan. Počinje prikazivanjem trenutnog Unix vremena-u stvarnom vremenu-i dodaje gotovo sve zamislive značajke povrh toga. Njegova glavna upotreba je za pretvaranje između vremenskih oznaka i datuma čitljivih za ljude, u oba smjera.

Dan's Tools velika je zbirka korisnih web aplikacija, od kojih je jedna i pretvarač vremenskih oznaka . Osnovniji je, ali ima vrlo čistu prezentaciju i jednostavan je za korištenje.

Vrijeme je predstavlja još jedan, još minimalističkiji izgled. Prikazuje vrijeme u brojnim formatima, uključujući Unix vrijeme. U naslov svoje stranice uključuje trenutno vrijeme, što je korisno.

Korištenje Unix Timea s alatima naredbenog retka

Na Linuxu i macOS -u, datum program je osnovni pomoćni program za bavljenje datumom/vremenom, uključujući vremenske oznake Unixa. Nazvan bez ikakvih argumenata, vraća trenutni datum/vrijeme u formatu čitljivom za čovjeka:

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

Ako vam je potreban trenutni datum/vrijeme u Unix vremenu, upotrijebite +%s argument:

$ date +%s
1612960114

Možete pretvoriti iz datuma koji se može čitati u ljude u vremensku oznaku koristeći -d zastavica ako je vaša verzija datum podržava ga. Većina inačica Linuxa trebala bi prema zadanim postavkama:

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

Na macOS -u, datum je drugačiji program koji zahtijeva drugačiji skup oznaka:

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

Idući u drugom smjeru, možete pretvoriti iz vremenske oznake Unixa koristeći -r zastava:

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

Neki drugi programi koriste %s format za rješavanje Unix vremena. Na primjer, ako želite prikazati datum izmjene datoteke u Unix vremenu, sa Linux verzija ls , možete koristiti sljedeće:

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

Kako koristiti Unix vrijeme u programskim jezicima

PHP ima vrijeme() funkcija koja vraća trenutnu vremensku oznaku Unixa. Njegovo datum() funkcija uzima vremensku oznaku kao svoj drugi argument:

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

JavaScript pristupa stvarima na zanimljiv način. Ono ima Date.now () metoda za dobivanje broja milisekundi od Unix epohe. Naravno, ovo možete podijeliti s 1.000 i zaokružiti rezultat kako biste dobili ekvivalentno vrijeme Unixa u sekundama:

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

Razumijevanje Unix vremena

Unix vrijeme jednostavan je koncept koji se pojavljuje na mnogim mjestima. Nakon što to shvatite, moglo bi vam se činiti da je vrlo korisno, na primjer, pri izračunavanju vremenskih razlika. Također možete prepoznati kada je to možda uzrok određenih grešaka.

Koncepti poput epohe i vremenskih oznaka važan su dio početka rada s Linuxom. Da biste saznali više o bitnim stvarima kao što su ls , pogledajte naš vodič kroz osnovne naredbe Linuxa.

Udio Udio Cvrkut E -pošta 9 osnovnih naredbi za početak rada s Linuxom

Želite li se upoznati s Linuxom? Počnite s ovim osnovnim naredbama Linuxa kako biste naučili standardne računalne zadatke.

Pročitajte Dalje
Povezane teme O autoru Bobby Jack(Objavljeno 58 članaka)

Bobby je entuzijast u tehnologiji koji je skoro dva desetljeća radio kao programer softvera. Oduševljen je igranjem igara, radi kao urednik recenzija u Switch Player Magazinu, a uronjen je u sve aspekte online izdavaštva i web razvoja.

Više od Bobbyja Jacka

Pretplatite se na naše obavijesti

Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e -knjige i ekskluzivne ponude!

Kliknite ovdje za pretplatu