Unixtid og ISO 8601-skrivemåden
Enhed uden for SI · størrelse: et tidspunkt som et helt antal sekunder siden 1970
Den nittende januar 2038 klokken tre fjorten og syv sekunder verdenstid når en toogtredive bit bred sekundtæller værdien 2 147 483 647 — det største tal, den formår at rumme. Det næste tik løfter den øverste bit, og det samme binære ord læses herefter som negativt: ure, der holder tiden efter netop denne tælling, havner ikke i år 2038, men i december 1901. Nogen kuriositet fra en fjern fremtid er det ikke — en industristyring eller en vandmåler tjener længere end de tolv år, der er tilbage.
Tællingen er bygget yderst enkelt: sekunderne løber i træk fra midnat den første januar 1970, og et døgn rummer i den altid præcis 86 400 sekunder. Netop enkelheden er kilden til begge dens ejendommeligheder. På den ene side følger en kalenderdato øjeblikkeligt af tallet og omvendt, så enhver hændelseslog, enhver database og ethvert filsystem holder tiden med den. På den anden side lader et skudsekund sig slet ikke udtrykke i en sådan tælling, hvilket betyder, at den trods sit navn ikke nummererer sekunder, men døgn med brøkdele, og i virkeligheden er en lineær funktion af UTC-skrivemåden og ikke en tæller af forløbet tid.
01 · Definition
Unixtiden er antallet af sekunder, der er forløbet siden midnat den første januar 1970 koordineret verdenstid, under forudsætning af at hvert døgn rummer præcis 86 400 sekunder. ISO 8601-skrivemåden angiver det samme på anden vis: med kalenderdato, klokkeslæt og angivelse af afvigelsen fra nulmeridianen, idet felterne løber strengt fra groft til fint.
Forbeholdet om 86 400 sekunder er ingen bagatel, men det væsentligste i definitionen. Et skudsekund, bekendtgjort af jordrotationstjenesten, kan tællingen ikke rumme, og derfor gentager systemet i indsættelsesøjeblikket enten én og samme værdi to gange eller stiller uret tilbage. Heraf følger noget vigtigt: forskellen mellem to unixtal er ikke antallet af sekunder, der virkelig er forløbet mellem to hændelser, hvis et skudsekund lå derimellem — afvigelsen fra atomtidsskalaen er allerede vokset til syvogtyve sekunder.
Grænsen derimod afhænger ikke af definitionen, men af lagringens bredde. Toogtredive bit med fortegn giver den største værdi 2 147 483 647, som falder den nittende januar 2038; den næste forøgelse sætter den øverste bit til et og gør tallet negativt, hvorved uret kastes tilbage til den trettende december 1901. Fireogtres bit skubber grænsen tohundredetooghalvfems milliarder år frem, men hele nanosekunder i de samme fireogtres bit slipper op allerede i 2262.
Skrivemåden efter standarden løser en anden opgave — udveksling frem for lagring — og derfor tæller i den ting, tallet slet ikke har: tidszonen, skilletegnet mellem dato og tid, og reglen om, at ved samme tegnlængde falder den leksikografiske orden sammen med den kronologiske. Netop denne sidste egenskab har gjort formatet til grundlag for sortering i filnavne og logge.
Før tiden med skyderen og se registret fyldes: bittene tændes fra højre mod venstre, og så længe den øverste, fortegnsbitten, forbliver mørk, er tallet positivt, og datoen vokser. Så snart tælleren træder forbi 2 147 483 647, blusser den øverste bit rødt op, hele tallet bliver negativt, og uret springer til 1901.
Den grønne rette linje er atomtidsskalaen, hvor hvert sekund virkelig er et sekund. Den røde trappelinje er unixtiden, som ved hver indsættelse afgiver ét og samme tidsstempel to gange, hvorfor linjen står stille på stedet. Afvigelsen udgør allerede syvogtyve sekunder og vokser, og derfor duer tællingen til en kalenderdato, men ikke til at måle varigheder i fysikken.
02 · Omregning
Indtast tidsstempel eller dato
Mellem alle multipla af tællingen — sekunder, millisekunder, mikro- og nanosekunder — er omregningerne nøjagtige, eftersom de kun adskiller sig ved en faktor. Omtrentlig er én eneste linje: omregningen til atomtidsskalaen kræver, at man ved, hvor mange skudsekunder der er løbet op til det givne tidspunkt.
Fortolkningen af en standardstreng foretager bladet i den udvidede skrivemåde med bogstavet Z; grundformen uden skilletegn ligger i de fine indstillinger.
År 2038-problemet ligger ikke i standarden, men i hardwaren og i gammel kode: toogtredive bit brede tidsstempler sidder i målernes firmware, i industristyringer, i filsystemformater og i databaser, hvor feltet allerede er erklæret som fire byte. At ændre typen i kildeteksten er let nok; at gennemgå millioner af installerede apparater i de tolv år, der er tilbage, er en opgave af samme slags som den før år 2000.
| Værdi | Bemærkning | ||
|---|---|---|---|
| {u} | {name} | {value} | {note} |
03 · Størrelsesordener
logaritmisk skala: fra et sekund til fireogtres bits grænse04 · Måleinstrumenter
Hvad der sætter stemplet på en hændelse
En særskilt chip med batteri, som fører tællingen, mens apparatet er slukket. Den gemmer for det meste ikke et unixstempel, men kalenderfelterne hver for sig, og bredden på dens årsfelt er dens egen, så samtalen om 2038 ved gamle printkort begynder med spørgsmålet om, til hvilket år chippen selv tæller.
NTP-protokollen bringer en maskines ur til fælles tid med få millisekunders nøjagtighed, og den advarer også med et eget flag et døgn i forvejen om en indsættelse. En egen grænse har den også, og den indtræffer tidligere: der tælles fra 1900 i toogtredive bit uden fortegn, og overløbet falder i februar 2036.
I en log skrives tidsstemplet enten som tal eller som streng efter standarden, og det andet er at foretrække af præcis én grund: for strenge af samme længde falder den alfabetiske orden sammen med den kronologiske, så posterne sorteres uden at datoen fortolkes. Netop derfor har formatet bredt sig langt uden for datateknikken.
Et apparats beredskab til 2038 kan prøves på én eneste måde — stil dets ur forbi den skæbnesvangre grænse og se, hvad der bliver af logge, certifikater og intervalregning. Sådan har man allerede fundet svigt i fakturering, i adgangssystemer og i nøglers gyldighedstider, hvor en dato i fremtiden dannes ved addition og løber over længe før selve grænsen.
05 · Skriveregler
Fra groft til fint, og altid med tidszone
Standarden kræver faldende rækkefølge af felterne, fire cifre i året, bindestreg som datoskilletegn og bogstavet T før tiden; tidszonen angives enten med bogstavet Z for nulmeridianen eller som plus-minus timer og minutter. Et unixstempel skrives som et helt tal uden cifergruppering, og multiplum skal altid angives, eftersom en faktor tusind skiller sekunder fra millisekunder, og de to er lette at forveksle efter tallets størrelse.
Den første skrivemåde læses forskelligt i forskellige lande og er derfor utilladelig i dataudveksling. Den anden udelader både skilletegnet og tidszonen, så tidspunktet forbliver ubestemt et døgn til hver side. Den tredje mister de indledende nuller, hvorfor strengene ophører med at sortere alfabetisk — og det er netop for den egenskab, formatet værdsættes. Den fjerde sidestiller unixtællingen med atomtidsskalaen, mens syvogtyve sekunders oparbejdede skudsekunder ligger imellem dem.
06 · Naboenheder
Ved siden af står alle tællinger, der er bygget efter samme princip, men fra en anden begyndelse: NTP-tiden fra 1900, den julianske dato fra middag i året 4713 før vor tidsregning, satellitsystemets skala fra januar 1980. De adskiller sig alene i epoke og enhed og omregnes derfor ved at trække en konstant fra.
fortegnsbehæftede sekunder
dens grænse falder allerede i 2036
skudsekunder ærligt medregnet
Blandt Simetriums datablade står ved siden af den julianske dato, hvorfra omregningskonstanten er hentet, skalaerne UTC, TAI og UT1, som forklarer de manglende skudsekunder, sekund som tællingens enhed, og bitten, hvis bredde er det, der fastlægger grænsen.
07 · Historisk afsnit
En epoke valgt af mangel på bit
I den første unixhåndbog blev tiden talt i tresindstyvendedele af et sekund fra begyndelsen af 1971, og i toogtredive bit rummede en sådan tælling kun godt to år. De slap så hurtigt op, at epoken havde måttet flyttes ved hver udgave af systemet, og man opgav sekundets brøkdele til fordel for hele.
Ved overgangen til hele sekunder vandt udviklerne et forråd på hundrede og seksogtredive år og kunne vælge begyndelsen efter bekvemmelighed frem for af nød. Man tog den første januar 1970 — den nærmeste runde dato i fortiden, som maskinoptegnelser alligevel ikke nåede til — og har siden ikke ændret den en eneste gang, skønt systemet mere end én gang er skrevet om fra bunden.
Den Internationale Standardiseringsorganisation førte de divergerende nationale formater sammen til ét og lagde en enkel regel til grund: felterne løber fra groft til fint, alle med indledende nuller. Bivirkningen viste sig vigtigere end hensigten — sådanne strenge sorteres som tal, og formatet bredte sig til filnavne, logge og udvekslingsprotokoller.
Skrivebords- og serversystemer gik for længst over til fireogtres bit, og der er grænsen skubbet hinsides enhver fornuftig horisont. Faren er blevet tilbage andetsteds: i firmwaren i instrumenter med tyve års levetid, i filformater, hvor feltet er erklæret som fire byte, og i beregninger af fremtidige frister, som løber over allerede i dag, så snart man lægger femten år til dagens dato.
En tælling, der trods sit navn ikke tæller sekunder
Definitionen af unixtid lyder som en tælling af sekunder, men kravet om glatte 86 400 sekunder i døgnet gør den til noget andet: til en lineær funktion af UTC-skrivemåden og ikke til et mål for forløbet tid. Hver gang jordrotationstjenesten bekendtgør en indsættelse, må tællingen gentage én og samme værdi to gange eller springe tilbage, og forskellen mellem to stempler mister netop det sekund. I et halvt århundrede er syvogtyve sådanne tab kommet sammen, og derfor tager man ved opgaver, der kræver en virkelig varighed, atomtidsskalaen og ikke denne.
Den anden ejendommelighed ligger slet ikke i definitionen, men i lagringsmåden, og det gør den til den eneste grænse i vores katalog, som hverken naturen eller en aftale har sat, men bredden på et maskinord. Den julianske dato slutter aldrig, fordi den er et tal; unixtiden slutter den nittende januar 2038, fordi den er et felt på fire byte. Forskellen mellem en størrelse og dens repræsentation optager sædvanligvis metrologer lidet, og her er det netop den, der afgør alt.
Katalog · måleenheder
Et datablad for hver størrelse
Syv SI-basisenheder, toogtyve afledte med egne navne og størrelser uden for systemet, som hverken teknikken eller kalenderen kan undvære.