© ilj ilj@flowsim.se
JavaScript på svenska 44:I
JavaScript new Date() & getTime() & Math.floor()

(datumet som används är din dators datum)
- hur långt är det till...

... exempelvis då år 2015
 







 


 
I det här exemplet är det den tid som är kvar till år 2015 när sidan laddas som skrivs ut. Enda sättet att uppdatera informationen är att ladda om sidan. (Om man använder LAYER skulle man kunna g¨ra en sida som ser exakt likadan ut men där enbart texten uppdateras t ex varje sekund.)
 
Man kan också visa tiden i f¨nsterlisten eller i en textruta och då låta den uppdateras kontinuerligt (exempel 44:III).
 
Man kan få en sida att laddas om automatiskt varje sekund genom att placera META-taggen
 
<META HTTP-EQUIV="refresh" CONTENT="1">
 
i HEAD-delen; siffran efter CONTENT reglerar hur ofta man vill att det ska ske (exempel 44:II).
 
man kan också använda en javascript-animation som i exempel 64.
 
Koden går att måla och kopiera (Ctrl+C). ¨ppna
HTML-filen i Notepad/ Anteckningar och klistra in koden där texten ska skrivas. Inga radbrytningar mitt i textsträngar!
 

<SCRIPT LANGUAGE = "
JavaScript"
      TYPE="
text/javascript">
<!--

      nutid = new Date() //1
      nyttaar=new Date("January 01, 2015 00:00:00") //2
      nutid=nutid.getTime() //3
      nyttaar=nyttaar.getTime() //3
      skillnad=nyttaar-nutid //4
      skillnad=skillnad/1000 //5
      if(skillnad>0) //6
      { //***
      sekunder=skillnad //
      timmar=sekunder/3600 //
      dagar=timmar/24 //
      var hdagar=Math.floor(dagar) //7
      var timmar=(dagar-hdagar)*24 //
      var htimmar=Math.floor(timmar) //
      var minuter=(timmar-htimmar)*60 //
      var hminuter=Math.floor(minuter) //
      sekunder=(minuter-hminuter)*60 //
      var hsekunder=Math.floor(sekunder) //
      } //****
      else //
      { //
      hdagar=0 //el använd semikolon, se nedan
      htimmar=0 //
      hminuter=0 //
      hsekunder=0 //
      alert('some text') //
      } //
 

      var layouttag="<CENTER><B>" //8
      var endlayouttag="</B></CENTER><BR>" //
      if(hdagar==1) //
      {denhet=" dag"} //
      else //
      {denhet=" dagar"} //
      if(htimmar==1) //
      {tenhet=" timme"} //
      else //
      {tenhet=" timmar"} //
      if(hminuter==1) //
      {menhet=" minut"} //
      else //
      {menhet=" minuter"} //
      if(hsekunder==1) //
      {senhet=" sekund"} //
      else //
      {senhet=" sekunder"} //
      document.write(layouttag+hdagar+
denhet+endlayouttag) //
      document.write(layouttag+htimmar+
tenhet+endlayouttag) //
      document.write(layouttag+hminuter+
menhet+endlayouttag) //
      document.write(layouttag+hsekunder+
senhet+"</B><BR>!</CENTER>") //
//
-->
</SCRIPT>

 
1 här får man fram
nutid, dvs dagens datum och tid .
 
2 här sätts variabeln
nyttaar (man kan f¨rstås fylla i vilket framtida datum som helst)
 
3 med hjälp av
getTime() får man fram datumet uttryckt i antal millisekunder sedan klockan 00.00.00 den 1 januari, 1970
 
4 här räknas skillnaden mellan
nyttaar och nutid ut; om skillnaden är mindre än noll så är sekelskiftet f¨rstås redan historia
 
5 if-satsen kollar om
skillnad är st¨rre än 0, dvs om sekelskiftet fortfarande är framtid; bara om det är så utf¨rs den del av den f¨ljande koden som innesluts av de två krullparenteser som markerats med tre asterisker. Om skillnad däremot är mindre än eller lika med 0 så uf¨rs koden efter else
 
6 den f¨rsta biten av koden plockar fram dagar, timmar, minuter och sekunder ur
skillnad. Vad man har är alltså ett antal millisekunder. Genom att dela skillnad med 1000 (gjort f¨re if-satsen) får man fram antal sekunder, delar man antal sekunder med 3600 får man fram antal timmar och delar man slutligen timmar med 24 får man fram antal dagar, t ex 591.5041298... dagar.
 
7
hdagar eller antal hela dagar får man fram med hjälp av Math.floor() som rundar av till närmsta lägre heltal, dvs t ex 591. Kvar har man då 0.5041298 ... ur vilket man får fram antal timmar genom att multiplicera med 24 etc
 
8 Här b¨rjar själva utskriftsdelen med att några "layoutvariabler" definieras. Därefter ser koden till att allt som f¨rekommer i ental f¨rses med enhetsbeckningar som även de står i ental, dvs är det en dag kvar så skrivs "1 dag" och inte "1 dagar".

 

 
Vill man av någon anledning ha koden mer kompakt kan man använda semikolon. T ex så här:
 
else{hdagar=0;htimmar=0;hminuter=0;
hsekunder=0;alert('some text')}

 
(EN rad är det tänkt att vara; har man en radbrytning mellan "some" och "text" till exempel, blir det ett felmeddelande av typen "unterminated string literal", dvs oavslutad textsträng).

 

Sidan gjordes av
 
ilj
 
ilj@flowsim.se
 

 
Senast ändrad 29 maj 1998.
 
Den här sidan hör hemma i ett ramsystem
hos:
www.flowsim.se