Ce este timpul Unix și când a fost epoca Unix?

Ce este timpul Unix și când a fost epoca Unix?

De ce Unix are propriul său concept de timp? Care este epoca și care este problema Y2038?





Ora Unix este un mijloc de a reprezenta o dată și o oră specifice, utilizate de Linux, macOS și multe alte sisteme interoperabile. Este atât de răspândit, încât probabil îl folosești fără să fii conștient de el. Odată ce înțelegeți timpul Unix, îl veți vedea în multe contexte. Mai multe instrumente vă pot ajuta să lucrați cu Unix time.





Care este scopul Unix Time?

Ora Unix este un număr de secunde totale de la o dată și o oră fixe. Este un format de dată / oră (sau marcaj de timp) care arată diferit de datele și orele citite de om cu care suntem obișnuiți. Acest lucru este doar din motive de eficiență. Este nevoie de mult mai puțin spațiu pentru a stoca un singur număr reprezentând secunde decât pentru a stoca valori separate pentru an, lună, oră etc.





Desigur, în termeni moderni, diferența de spațiu nu este deloc atât de mare. Dar luați în considerare faptul că Unix a apărut la sfârșitul anilor 1960, când stocarea disponibilă era mult mai mică. Ștampilele de timp sunt, de asemenea, folosite foarte mult, astfel încât stocarea lor se adaugă. De exemplu, fiecare fișier are trei marcaje de timp asociate.

Formatul este aproape imposibil de tradus în cap, dacă nu sunteți un geniu matematic. Dar are încă unele avantaje față de alternative mai lizibile, cum ar fi Miercuri, 21 octombrie 2015 07:28:00 GMT . Puteți comanda două marcaje de timp Unix foarte ușor, dintr-o privire. De asemenea, este de obicei mai rapid să stabilim diferența dintre două timestampuri. Acest lucru este valabil mai ales pentru datele apropiate, cum ar fi în zilele adiacente.



Despre Epocă

Deci, timpul Unix este un număr total de secunde de la un anumit moment în timp. Dar care este acel moment în timp? Este 00:00:00 UTC pe 1 ianuarie 1970 . Aceasta este adesea denumită Epoca Unix. Programatorii au ales această dată pentru epocă din comoditate, deoarece a fost cea mai apropiată dată rotundă când au inventat ora Unix.

Este posibil să fi văzut bine această dată când ceva nu a mers bine. Este în mod clar o eroare, dar care pare foarte ciudată atunci când rezultă o întâlnire dinaintea timpului în care s-au născut mulți dintre noi! Totuși, este complet de înțeles când știi despre timpul Unix. Dacă vreun sistem încearcă să afișeze un timestamp care nu are nicio valoare, acesta se va traduce adesea la 0 și va duce la data exactă a epocii.





cum să copiați o listă de redare pe spotify

Unix Time Data Format

Strict vorbind, nu există una. Tipul de date original era un număr întreg de 32 de biți, iar acest lucru rămâne adesea cazul, chiar și în sisteme mult mai puternice.

Acest tip de date permite ca valoarea să stocheze în total 2 ^ 32 de secunde, adică puțin peste 136 de ani. Această valoare este de obicei semnată, ceea ce înseamnă că poate fi negativă sau pozitivă. Deci, reprezintă de obicei 68 de ani de ambele părți ale epocii, adică 1902-2038.





Desigur, aceasta este încă o perioadă limitată. Dar utilizarea principală a formatului timestamp a fost pentru concepte precum modificarea fișierelor. Nevoia era foarte mult să reprezinte timpul apropiat de prezent, mai degrabă decât istoria antică sau departe în viitor. Chiar și pentru aplicații precum calendarele, rareori este nevoie să se reprezinte date mai mult de câteva decenii în viitor.

Dar asta nu înseamnă că acest interval limitat de timp este fără probleme ...

Problema Anului 2038

Bugul Y2K (una dintre cele mai grave greșeli de programare din istorie) a afectat sistemele informatice care au stocat ani ca valori din două cifre. Când a venit anul 2000, astfel de sisteme l-au tratat ca și când ar fi fost 1900. În acest caz, acest lucru nu a fost atât de catastrofal pe cât se temea, în principal pentru că mulți oameni au petrecut mult timp și efort în avans, pregătindu-se pentru el.

Dacă ați fi atent în secțiunea anterioară, este posibil să fi observat o problemă similară care ar putea afecta timpul Unix. Ei bine, timpul Unix are o problemă proprie de date: problema Y2k38. (Este adesea denumită o problemă, nu o eroare; poate că am devenit mai optimiști începând cu anul 2000!) Când timpul Unix expiră literalmente în 2038, sistemele vor trata noi date fie ca 1902 sau 1970. Sau, probabil, ele Voi eșua cu totul.

Cel puțin această problemă nu ne va atinge la miezul nopții de Revelion. Ultima secundă a timpului Unix pe 32 de biți va cădea pe 19 martie. În eventualitate, vom actualiza probabil majoritatea sistemelor până în 2038 sau oricum vor fi învechite până atunci.

Unele resurse utile de marcare a timpului

The Convertor de epocă site-ul este probabil cel mai cuprinzător convertor de timestamp disponibil. Începe prin afișarea timpului actual Unix - în timp real - și adaugă aproape toate caracteristicile imaginabile pe deasupra. Utilizarea sa principală este pentru conversia între marcajele de timp și datele citite de om, în ambele direcții.

Dan’s Tools este o colecție uriașă de aplicații web utile, dintre care una este convertor timestamp . Este mai simplu, dar are o prezentare foarte curată și este ușor de utilizat.

Timpul este prezintă un alt aspect, chiar mai minimalist. Afișează timpul în mai multe formate, inclusiv ora Unix. Acesta include ora curentă în titlul paginii sale, care este util.

Utilizarea Unix Time cu instrumentele pentru linia de comandă

Pe Linux și MacOS, Data programul este utilitarul principal pentru tratarea datei / orei, inclusiv a marcajelor de timp Unix. Apelat fără niciun argument, returnează data / ora curentă într-un format lizibil de către om:

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

Dacă aveți nevoie de data / ora curentă în ora Unix, utilizați +% s argument:

$ date +%s
1612960114

Puteți converti dintr-o dată citibilă de om într-o marcă de timp folosind -d semnalizați dacă versiunea dvs. de Data îl susține. Majoritatea versiunilor Linux ar trebui, în mod implicit:

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

Pe macOS, Data este un program diferit, care necesită un set diferit de steaguri:

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

Mergând în cealaltă direcție, puteți converti dintr-un timestamp Unix folosind -r steag:

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

Unele alte programe folosesc % s format pentru a face față timpului Unix. De exemplu, dacă doriți să afișați data modificării unui fișier în timpul Unix, cu Versiunea Linux a eu sunt , puteți utiliza următoarele:

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

Cum se folosește Unix Time în limbaje de programare

PHP are timp() funcție care returnează marcajul de timp actual Unix. Este Data() funcția ia un timestamp ca al doilea argument:

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

JavaScript abordează lucrurile într-un mod interesant. Are o Date.now () metoda pentru a obține numărul de milisecunde de la epoca Unix. Desigur, puteți împărți acest lucru la 1.000 și rotunji rezultatul pentru a da timpul Unix echivalent în secunde:

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

Înțelegerea Unix Time

Unix time este un concept simplu care apare în multe locuri. După ce îl înțelegeți, s-ar putea să-l găsiți destul de util atunci când calculați diferențele de timp, de exemplu. De asemenea, puteți recunoaște când poate fi cauza anumitor bug-uri.

Concepte precum epoca și marcajele de timp sunt o parte importantă a începutului cu Linux. Pentru a afla mai multe despre elementele esențiale precum eu sunt , consultați ghidul nostru pentru comenzile Linux de bază.

Acțiune Acțiune Tweet E-mail 9 comenzi de bază pentru a începe să utilizați Linux

Doriți să vă familiarizați cu Linux? Începeți cu aceste comenzi Linux de bază pentru a învăța sarcini de calcul standard.

Citiți în continuare
Subiecte asemănătoare Despre autor Bobby Jack(58 articole publicate)

Bobby este un pasionat de tehnologie care a lucrat ca dezvoltator de software timp de aproape două decenii. Este pasionat de jocuri, lucrează ca editor de recenzii la Switch Player Magazine și este cufundat în toate aspectele publicării online și dezvoltării web.

Mai multe de la Bobby Jack

Aboneaza-te la newsletter-ul nostru

Alăturați-vă newsletter-ului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!

Faceți clic aici pentru a vă abona