Gå til innhold

UNIX-time når 1111111111 i natt!


Anbefalte innlegg

Gled dere alle likesinnete hackere. Vi må følge nøye med på dette her og ta screenshot!

 

Til de som lurer på hva klokken er nå, skriv date +%s

 

Jeg laget en nedtellingsting for de som er så interessert (merk at den er smekket full av features!)

#!/bin/bash


while [[ 1 ]]
do
       NOW=$(date +%s);
       TIME='1111111111';

       SECS=$(expr $TIME - $NOW);
       MINS=$(expr $SECS / 60);
       HOUR=$(expr $MINS / 60);
       echo "$SECS ($MINS minutter) to go! ($HOUR timer)"

       sleep 1;
done

Scriptet er under GPL! :D

  • Liker 1
Lenke til kommentar
Videoannonse
Annonse

La til litt jeg, så roper den ut og stopper når klokka er 1111111111:cool:

 

#!/bin/bash


while [[ 1 ]]
do
      NOW=$(date +%s);
      TIME='1111111111';

      SECS=$(expr $TIME - $NOW);
      MINS=$(expr $SECS / 60);
      HOUR=$(expr $MINS / 60);
      if [ "$NOW" = "$TIME" ]; then
             echo "Klokka er 1111111111!"
             exit
      fi
      echo "$SECS ($MINS minutter) to go! ($HOUR timer)"

      sleep 1;
done

Fins sikkert en litt finere måte å komme seg ut av en while loop på, men det funker og jeg er trøtt ..

Lenke til kommentar
And for the million-dollar-question: Hvilken dato vil tiden være 11111111111 sekunder siden "0"? :)

Det som skjer da er at jeg muligens vil ta meg fri akkurat den dagen grunnet Y2k2

 

<?php
echo date("l dS of F Y h:i:s A", "11111111111");
?>

sier

Tuesday 19th of January 2038 04:14:07 AM

 

Den datoen er forøvrig den såkalte reele Y2K buggen, siden oppbygningen av Unix timestamp gjør at den vil, rett og slett starte på nytt da.

 

Også kalt en arithmetic overflow

 

Jeg testet dette ved å stille maskinen min frem til den 20 januar, 2038, og jeg forsøkte å kjøre overnevnte script (endret til now()), og det krasjet faktisk apache...

Lenke til kommentar

Overflow vil vel være på 4294967295 eller 2147483647 siden de er de største tallene du kan trykke inn i henholdsvis en unsigned og en signed int (32-bit).

Etter litt testing ser det ut til at man vanligvis bruker en signed int:

>>> time.ctime(2147483647)
'Tue Jan 19 04:14:07 2038'
>>> time.ctime(2147483648)
'Fri Dec 13 21:45:52 1901'
>>> time.ctime(4294967295)
'Fri Dec 13 21:45:52 1901'
>>> time.ctime(11111111111)
'Fri Dec 13 21:45:52 1901'

Men innen 2038 kjører sikkert det meste på 64-bits systemer, og da representeres sikkert UNIXTIME av et 64-bits heltall.

 

Vi hadde en mer spennende dato i fjor:

>>> time.ctime(2**30)
'Sat Jan 10 14:37:04 2004'

Da var UNIXTIME akkurat 1Gi, også kjent som 0x40000000.

Endret av zyp
Lenke til kommentar
Lurer på om de er ferdig å feire Jesu fødsel og har innsett at han ikke kommer tilbake by then...

 

Kanskje har de også merget med solen og blitt til en liten hvit dverg. :)

All hail Stallman, our saviour! :p

 

Bah. Hva tror du kommer til å styre romskipene som reiser ut i det uendelige univers, på leting etter en ung stjerne?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...