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()