JavaScript
Børre Stenseth
Noen begreper >Tid og dato

Tid og dato

JavaScript har en nyttig klasse som heter Date. Dette kan hjelpe oss å holde styr på ukedager, tidsdifferanser osv. Nedenfor finner du et eksempel på bruk av noen funksjoner i Date:

klikk her

Skriptet er slik:

function visFullTime(eltID){
  var today=new Date();
  var T=prettyTime(today)+'  '+norwegianDate(today);
  document.getElementById(eltID).innerHTML=T;
}
function prettyTime(dt){
  var h=dt.getHours();
  var m=dt.getMinutes();
  var s=dt.getSeconds();
  var hs=''+h;
  var ms=''+m;
  var ss=''+s;
  if (h <10) hs='0'+hs;
  if (m <10) ms='0'+ms;
  if (s <10) ss='0'+ss;
  return hs+':'+ms+':'+ss;
}
function norwegianDate(dt)
{
  var weekday=new Array("Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag");
  var monthName=new Array("Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember");
  return weekday[dt.getDay()]+' '+dt.getDate()+
         '. '+monthName[dt.getMonth()]+' '+dt.getFullYear();
}

Now

JavaScript holder styr på en universell teller som teller antall millisekunder fra 1 januar 1970 kl 00:00:00. Denne kan vi få tak i vedhjelp av funksjonen Date.now().

Disse to setningene skal gi samme svar:

var s=new Date().getTime();
var t=Date.now();

Nå er det så vidt jeg vet ikke noe spesielt med nyttårsaften 1969, men det gir oss en universell referanse. Det er alltid en masse problemer i programmering med å holde styr på ulike kalendere og ulik tidsregning, og vi skal ofte holde styr på tidsdifferenser. Det som kommer i tillegg er ulike tidssoner. Vi forfølger ikke dette temaet her.

Tidsforskjell

Merk for det første at JavaScript teller månedene fom. 0 tom. 11 (januar er måned 0 og desember 11). Den første ukedagen er på søndag, som er dag 0.

Vi kan konstruere datoer ved å angi de enkelte komponentene. Vi prøver å beregne alderen til en person som er født 27/12/2006. Det første forslaget gir oss ikke mer enn vi kunne regne ut basert på årstallene alene.

function age(){
    var birth=new Date();
    birth.setFullYear(2006,11,27);
    var today=new Date();
    var yearsLived=today.getFullYear()-birth.getFullYear();
    alert(yearsLived);
}

test:

Vi får altså ut antall hele år, rundet oppover. Vi kan nå fortsette med det presisjonsnivået vi vil. I neste forslag har jeg sett bort fra skuddår, og jeg har regnet at en måned er 30 og en halv dag lang.

function age3(){
    var birth=new Date();
    birth.setFullYear(2006,11,27);
    var today=new Date();
    var msLived=today.getTime()-birth.getTime()
    var daysLived=msLived/(1000*60*60*24)
    var yearsLived=Math.floor(daysLived/365);
    var plussMonths=Math.floor(daysLived/30.5-yearsLived*12);
    alert(""+yearsLived+" år og "+plussMonths+" måneder");
}

test:

Date har metodene: getDate(), getDay(), getHours(), getMinutes(), getMonth(), getSeconds(), getTime(), getTimeZoneoffset(), getYear(), parse(), prototype(), setDate(), setHours(), setMinutes(), setMonth(), setSeconds(), setTime(), setYear(), toGMTString(), toLocaleString(), UTC()

Noen begreper >Tid og dato