Hva er Unix-tid?
Unix-tid (også kjent som Epoke-tid, POSIX-tid, eller Unix-tidsstempel) er et system for å beskrive et tidspunkt. Det er antall sekunder som har gått siden Unix-epoken, som er definert som 00:00:00 UTC torsdag 1. januar 1970. Det brukes mye i Unix-lignende operativsystemer og mange andre databehandlingssystemer.
Hovedfordelen med Unix-tid er enkelheten. Den representerer tid som et enkelt, universelt forstått heltall som kontinuerlig øker. Dette gjør det utrolig enkelt å lagre, sammenligne og utføre beregninger med tidsstempler uten å bekymre seg for tidssoner, sommertid eller ulike kalender systemer. For eksempel, for å finne varigheten mellom to hendelser, trekker du bare deres Unix-tidsstempel fra hverandre.
Selv om dette råtallet er perfekt for datamaskiner, er det ikke særlig brukervennlig for mennesker. For å bygge bro over dette gapet bruker utviklere og teknologientusiaster et verktøy kalt en epokkonverter. Du kan bruke det til å konvertere hvilket som helst tidsstempel til en menneske-lesbar dato, eller gjøre det motsatte ved å finne tidsstempelet for en spesifikk dato.
Problemet med år 2038
Et velkjent problem relatert til Unix-tid er "År 2038-problemet." Det ligner på Y2K-problemet. Mange tidlige datasystemer var designet for å lagre Unix-tidsstempelet som et 32-bits signert heltall. Et signert 32-bits heltall kan representere verdier fra -2 147 483 648 til 2 147 483 647.
Maksimalverdien, 2 147 483 647
, vil bli nådd klokken 03:14:07 UTC den 19. januar 2038. Ved neste sekund vil heltallet overskride og wrappe rundt til sin mest negative verdi, som vil bli tolket av systemer som en dato i 1901. Dette kan forårsake omfattende feil i eldre programvare som er avhengig av 32-bits tidsrepresentasjoner.
Løsningen er å bruke et 64-bits heltall for å lagre tidsstempelet. Et 64-bits heltall har en maksimal verdi så stor at det ikke vil overskride i omtrent 292 milliarder år, noe som effektivt løser problemet for overskuelig fremtid. De fleste moderne operativsystemer og programvare har allerede gått over til 64-bits tidsrepresentasjoner.
Skuddsekunder og Unix-tid
Et viktig teknisk detalj er at Unix-tid ikke tar hensyn til skuddsekunder. Mens UTC (Koordinerte Universelle Tid) av og til legger til en skuddsekund for å holde klokkene våre i samsvar med Jordens rotasjon, ignorerer Unix-tidsstempel dem og fortsetter å telle lineært.
Dette betyr at Unix-tid ikke er en sann representasjon av UTC. I stedet er den mer nøyaktig beskrevet som en lineær telling av sekunder. Når en skuddsekund inntreffer, gjentar Unix-tid noen ganger et sekund for å holde seg synkronisert. Denne nyansen er kritisk for vitenskapelige og høypresisjons applikasjoner, men for de fleste generelle databehandlingsformål er forskjellen ubetydelig.
Vanlige bruksområder for Unix-tid
- Fil-tidsstempler: Operativsystemer bruker Unix-tidsstempler for å spore når filer ble opprettet, endret eller sist åpnet.
-
Databaser:
Det er en vanlig og effektiv måte å lagre dato- og tidsinformasjon for poster (f.eks.
created_at
,updated_at
). - API-er og webutvikling: Brukes for øktutløp, cache-kontroll og logging av API-forespørsler.
- Programmering: Nesten alle programmeringsspråk tilbyr funksjoner for å hente det nåværende Unix-tidsstempelet og konvertere det til og fra menneske-lesbare datoformater.