Wat is Unix-tijd en wanneer was het Unix-tijdperk?

Wat is Unix-tijd en wanneer was het Unix-tijdperk?

Waarom heeft Unix zijn eigen concept van tijd? Wat is het tijdperk en wat is het Y2038-probleem?





Unix-tijd is een middel om een ​​specifieke datum en tijd weer te geven, die wordt gebruikt door Linux, macOS en vele andere interoperabele systemen. Het is zo wijdverbreid dat u het waarschijnlijk gebruikt zonder dat u zich ervan bewust bent. Als je Unix-tijd echter eenmaal begrijpt, zul je het in veel contexten zien. Verschillende tools kunnen je helpen om met Unix time te werken.





Wat is het doel van Unix Time?

Unix-tijd is een telling van het totale aantal seconden sinds een vaste tijd en datum. Het is een datum/tijd (of tijdstempel) formaat dat er anders uitziet dan de voor mensen leesbare datums en tijden die we gewend zijn. Dit is puur uit efficiëntieoverwegingen. Het kost veel minder ruimte om een ​​enkel getal voor seconden op te slaan dan om afzonderlijke waarden op te slaan voor het jaar, de maand, het uur, enz.





In moderne termen is het ruimteverschil natuurlijk helemaal niet zo groot. Maar bedenk dat Unix is ​​ontstaan ​​in de late jaren zestig, toen de beschikbare opslagruimte veel kleiner was. Tijdstempels worden ook veel gebruikt, dus hun opslag loopt op. Aan elk bestand zijn bijvoorbeeld drie tijdstempels gekoppeld.

Het formaat is vrijwel onmogelijk om in je hoofd te vertalen, tenzij je een wiskundig genie bent. Maar het heeft nog steeds enkele voordelen ten opzichte van beter leesbare alternatieven zoals: wo, 21 okt. 2015 07:28:00 GMT . U kunt heel eenvoudig in één oogopslag twee Unix-tijdstempels bestellen. Het is meestal ook sneller om het verschil tussen twee tijdstempels te bepalen. Dit geldt met name voor data die dicht bij elkaar liggen, zoals op aangrenzende dagen.



Over het tijdperk

Unix-tijd is dus een totaal aantal seconden sinds een specifiek tijdstip. Maar wat is dat tijdstip? Zijn 00:00:00 GMT Aan 1 januari 1970 . Dit wordt vaak het Unix-tijdperk genoemd. Programmeurs kozen deze datum voor het tijdperk uit gemak omdat het de dichtstbijzijnde datum was waarop ze Unix-tijd uitvonden.

Je hebt deze datum vast wel eens gezien als er iets mis is gegaan. Het is duidelijk een bug, maar een die er heel vreemd uitziet als het resulteert in een datum van vóór de tijd dat velen van ons werden geboren! Het is echter volkomen begrijpelijk als je weet van Unix-tijd. Als een systeem probeert een tijdstempel weer te geven dat geen waarde heeft, wordt dit vaak vertaald naar 0 en resulteert dit in de exacte epochedatum.





hoe krijg je wifi in je huis zonder internet

Het Unix-tijdgegevensformaat

Strikt genomen is die er niet. Het oorspronkelijke gegevenstype was een 32-bits geheel getal en dit blijft vaak het geval, zelfs in veel krachtigere systemen.

Met dit gegevenstype kan de waarde in totaal 2^32 seconden opslaan, wat iets meer dan 136 jaar is. Deze waarde is meestal ondertekend, wat betekent dat deze negatief of positief kan zijn. Dus het vertegenwoordigt meestal 68 jaar aan weerszijden van het tijdperk, d.w.z. 1902-2038.





Dit is natuurlijk nog een beperkte periode. Maar het primaire gebruik van het tijdstempelformaat was voor concepten zoals bestandswijziging. Er was veel behoefte om de tijd dicht bij het heden weer te geven, in plaats van de oude geschiedenis of ver in de toekomst. Zelfs voor toepassingen zoals kalenders is het zelden nodig om datums meer dan een paar decennia in de toekomst weer te geven.

Maar dat betekent niet dat deze beperkte tijdspanne zonder problemen is…

Het probleem van het jaar 2038

De Y2K-bug (een van de ergste programmeerfouten in de geschiedenis) trof computersystemen die jaren als tweecijferige waarden hadden opgeslagen. Toen het jaar 2000 aanbrak, behandelden dergelijke systemen het alsof het 1900 was. Uiteindelijk was dit niet zo catastrofaal als gevreesd, vooral omdat veel mensen van tevoren veel tijd en moeite besteedden aan de voorbereiding ervan.

Als je in het vorige gedeelte goed had opgelet, zou je een soortgelijk probleem hebben gezien dat de Unix-tijd kan beïnvloeden. Welnu, Unix time heeft een eigen dataprobleem: het Y2k38-probleem. (Het wordt vaak een probleem genoemd, geen bug; misschien zijn we sinds het jaar 2000 optimistischer geworden!) Als de Unix-tijd letterlijk om is in 2038, zullen systemen nieuwe datums behandelen als 1902 of 1970. Of mogelijk zij' zal gewoon helemaal mislukken.

Dit probleem zal ons in ieder geval niet om middernacht op oudejaarsavond treffen. De laatste seconde van 32-bit Unix-tijd valt op 19 maart. In het geval dat we de meeste systemen tegen 2038 zullen upgraden, zijn ze tegen die tijd sowieso al verouderd.

Enkele handige bronnen voor tijdstempels

De Epoch-omzetter site is mogelijk de meest uitgebreide tijdstempelconverter die beschikbaar is. Het begint met het weergeven van de huidige Unix-tijd - in realtime - en voegt daar bijna elke denkbare functie aan toe. Het belangrijkste gebruik is voor het converteren tussen tijdstempels en door mensen leesbare datums, in beide richtingen.

Dan's Tools is een enorme verzameling handige web-apps, waaronder een tijdstempel converter . Het is eenvoudiger, maar heeft een zeer schone presentatie en is gemakkelijk te gebruiken.

Tijd is presenteert een andere, nog meer minimalistische look. Het toont tijd in een aantal formaten, waaronder Unix-tijd. Het bevat de huidige tijd in de paginatitel, wat handig is.

Unix Time gebruiken met opdrachtregelprogramma's

Op Linux en macOS is de datum programma is het kernhulpprogramma voor het omgaan met datum/tijd, inclusief Unix-tijdstempels. Aangeroepen zonder enige argumenten, retourneert het de huidige datum/tijd in een door mensen leesbaar formaat:

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

Als je de huidige datum/tijd in Unix-tijd nodig hebt, gebruik dan de +%s argument:

$ date +%s
1612960114

U kunt een door mensen leesbare datum converteren naar een tijdstempel met behulp van de -NS markeer als uw versie van datum ondersteunt het. De meeste Linux-versies zouden standaard:

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

Op macOS, datum is een ander programma, waarvoor een andere set vlaggen nodig is:

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

Als je in de andere richting gaat, kun je converteren van een Unix-tijdstempel met behulp van de -R vlag:

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

Sommige andere programma's gebruiken de %s formaat om met Unix-tijd om te gaan. Als u bijvoorbeeld de wijzigingsdatum van een bestand in Unix-tijd wilt weergeven, met de Linux-versie van ls , kunt u het volgende gebruiken:

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

Unix Time gebruiken in programmeertalen

PHP heeft de tijd() functie die de huidige Unix-tijdstempel retourneert. Zijn datum() functie neemt een tijdstempel als tweede argument:

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

JavaScript benadert dingen op een interessante manier. Het heeft een Datum.nu () methode om het aantal milliseconden sinds het Unix-tijdperk te krijgen. Je kunt dit natuurlijk delen door 1.000 en het resultaat afronden om de equivalente Unix-tijd in seconden te krijgen:

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

Unix-tijd begrijpen

Unix-tijd is een eenvoudig concept dat op veel plaatsen opduikt. Als je het eenmaal begrijpt, vind je het misschien best handig, bijvoorbeeld bij het berekenen van tijdsverschillen. U kunt ook herkennen wanneer het de oorzaak kan zijn van bepaalde bugs.

Concepten zoals het tijdperk en tijdstempels zijn een belangrijk onderdeel om met Linux aan de slag te gaan. Voor meer informatie over essentiële zaken zoals: ls , bekijk onze gids voor basis Linux-commando's.

Deel Deel Tweeten E-mail 9 basiscommando's om u op weg te helpen met Linux

Wilt u vertrouwd raken met Linux? Begin met deze basis Linux-commando's om standaard computertaken te leren.

Lees volgende
Gerelateerde onderwerpen Over de auteur Bobby Jack(58 artikelen gepubliceerd)

Bobby is een technologie-enthousiasteling die bijna twee decennia als softwareontwikkelaar heeft gewerkt. Hij is gepassioneerd door gaming, werkt als recensie-editor bij Switch Player Magazine en is ondergedompeld in alle aspecten van online publiceren en webontwikkeling.

Meer van Bobby Jack

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren