Päivämäärämetodeja

Päivämääräobjekti saadaan luotua käskyllä (valitaan nimeksi vaikkapa pvm):

Päivämääräobjekti pvm sisältää tämän jälkeen paljon tietoa tämän hetkisestä ajasta: viikonpäivä, päivämäärä, aikavyöhyke jne.
Nämä tiedot voidaan hakeaa päivämäärämetodeilla. Esimerkiksi

palauttaa päivän järjestysnumeron (1-31).

Date() palauttaa päivämääräobjektin
getDate() palauttaa päivämääräobjektin päivän (arvot 1-31)
getDay() palauttaa päivämääräobjektin viikonpäivän (arvot 0-6. 0=sunnuntai, 1=maanantai, jne.)
getMonth() palauttaa päivämääräobjektin kuukauden (arvot 0-11. 0=tammikuu, 1=helmikuu, jne.)
getFullYear() palauttaa päivämääräobjektin vuoden (kokonaisluku)
getHours() palauttaa päivämääräobjektin tunnit (arvot 0-23)
getMinutes() palauttaa päivämääräobjektin minutit (arvot 0-59)
getSeconds() palauttaa päivämääräobjektin sekunnit (arvot 0-59)
getMilliseconds() palauttaa päivämääräobjektin millisekuntien määrän (arvot 0-999)
getTime() palauttaa millisekuntien määrän keskiyöstä 1/1-1970
getTimezoneOffset() palauttaa tietokoneen ajan ja GMT-ajan eron minutteina

Voimme myös asettaa haluamamme päivämäärätiedon luotuun päivämäärämuuttujaan.
Esimerkiksi:

Huomaa, että päivämäärämuuttujaan voidaan asettaa arvo vain hetkestä keskiyö, tammikuun 1, 1970. Tätä ennen olevia ajan hetkiä ei siis voi asettaa muuttujan arvoksi.

setDate()asettaa päivän päivämääräobjektiin (arvot 1-31)
setFullYear()asettaa vuoden päivämääräobjektiin (kokonaisluku)
setHours()asettaa tunnit päivämääräobjektiin (arvot 0-23)
setMilliseconds()asettaa millisekunnit päivämääräobjektiin (arvot 0-999)
setMinutes()asettaa minutit päivämääräobjektiin (arvot 0-59)
setMonth()asettaa kuukauden päivämääräobjektiin (arvot 0-11. 0=January, 1=February)
setSeconds()asettaa sekunnit päivämääräobjektiin (arvot 0-59)
setTime()asettaa millisekuntien määrän keskiyöstä 1/1-1970
toGMTString()palauttaa GMT-ajan merkkijonona
toLocaleString()muuttaa paikallisen ajan päivämääräobjektin merkkijonoksi
toString()muuttaa päivämääräobjektin merkkijonoksi


Päivämäärä-objektin esimerkki


<div id="kello"></div>

<script language="JavaScript">

var aika = new Date();

function uusi(){

	aika = new Date(); //uusitaan aika

	var tunnit = aika.getHours();
	var minutit = aika.getMinutes();
	var sekunnit = aika.getSeconds();

	var kellotaulu = tunnit + " : " + minutit + " : " + sekunnit; 

	document.getElementById("kello").innerHTML = kellotaulu;
}

var ajastin = window.setInterval(function(){uusi();},1000);

</script>





Matemaattiset objektit

Matematiikka-objekti Math on JavaScriptiin sisäänrakennettu. Math -objektilla on metodeja ja ominaisuuksia.

Math -objektin ominaisuuksia on seuraavassa taulukossa:

E palauttaa vakion e
LN2 palauttaa luvun 2 luonnollisen logaritmin
LN10 palauttaa luvun 10 luonnollisen logaritmin
LOG2E palauttaa vakion e 2-kantaisen logaritmin
LOG10E palauttaa vakion e 10-kantaisen logaritmin
PI Palauttaa vakion pii
SQRT1_2 Palauttaa 1/(SQRT2)
SQRT2 Palauttaa luvun 2 neliöjuuren

Math -objektin metodit:

abs(x) palauttaa luvun x itseisarvon
cos(x) palauttaa luvun cos(x), x radiaaneina, tarvitsee x*Math.PI/180
sin(x) palauttaa luvun sin(x), x radiaaneina, tarvitsee x*Math.PI/180
tan(x) palauttaa luvun tan(x), x radiaaneina, tarvitsee x*Math.PI/180
acos(x) palauttaa arccosin(x), tulos asteiksi: acos(x)*180/Math.PI
asin(x) palauttaa arcsin(x), tulos asteiksi: asin(x)*180/Math.PI
atan(x) palauttaa arctan(x), tulos asteiksi: atan(x)*180/Math.PI
exp(x) palauttaa luvun e korotettuna potenssiin x
pow(x,y) palauttaa luvun x korotettuna potenssiin y
log(x) palauttaa luvun x luonnollisen logaritmin
ceil(x) palauttaa lähimmän kokonaisluvun suurempi tai yhtäsuuri, kuin x
floor(x) palauttaa lähimmä kokonaisluvun pienempi tai yhtäsuuri, kuin x
round(x) pyöristää luvun x lähimpään kokonaislukuun
max(x,y) palauttaa suuremman luvuista x ja y
min(x,y) palauttaa pienemmän luvuista x ja y
random() palauttaa satunnaisluvun väliltä 0 ja 1
sqrt(x) palauttaa luvun x neliöjuuren

Esimerkkejä:

Luku1:
Luku2:

Tulos:

Math.PI
Math.LN10
Math.SQRT2
Math.abs(Luku1)
Math.exp(Luku1)
Math.pow(Luku1,Luku2)
Math.ceil(Luku1)
Math.floor(Luku1)
Math.round(Luku1)
Math.min(Luku1,Luku2)
Math.random()
Math.sqrt(Luku1)
Math.sin(Luku1*Math.PI/180)
Math.asin(Luku1)*180/Math.PI

Desimaalilukujen pyöristäminen

Desimaaliluvun pyöristäminen tapahtuu helpoimmin Math.round()-metodin avulla.

Oletetaan, että

ja tarvitsemme luvusta vain kaksi ensimmäistä desimaalia.

Kertomalla luku sadalla saamme pilkkua siirrettyä kaksi askelta oikealle,

jolloin luvuksi tulee 2334.5646.

Math.round-metodilla saamme pyöristettyä luvun lähimpään kokonaislukuun, jolloin saamme 2335.

Lopuksi voimme jakaa luvun jälleen sadalla, jolloin tuloksena on 23.35


<script language="JavaScript">

function pyorista(){

	var luku = 1*document.getElementById("pyoristettava").value;

	luku = luku*100;
	luku = Math.round(luku);
	luku = luku/100;

	window.alert(luku);
}

</script>

<input type="text" value="23.345646" id="pyoristettava" />
<br />
<input type="button" value="Pyöristä kahteen desimaaliin" onClick="pyorista();" /> 




Esimerkki satunnaisuuden käsittelystä

Joskus tarvitsemme satunnaisen kokonaisluvun halutulta väliltä. Tällöin satunnaislukua nollan ja yhden väliltä täytyy hieman käsitellä.

Alla halutaan noppaluku satunnaisesti ja haluttu on laskettu siten, että Math.random() -satunnaisluku on kerrottu kuudella, jolloin saamme satunnailuvun välillä ]0,6[

Math.floor()-metodilla hävitämme tuloksesta pilkun jälkeiset osat, jolloin vain kokonaisosa jää jäljelle. Tuloksena on kokonaisluku 0-5. Lopuksi lisäämme tulokseen yhden, jollon tulos on kokonailuku 1-6.


<script language="JavaScript">

function satunnaisluku(){

	var randomi = Math.random(); //haetaan satunnainen luku ]0,1[
				//ei tule siis koskaan tasan 0 tai tasan 1

	//kerrotaan tulos kuudella ja pyöristetään alaspäin
	//lähimpään kokonaislukuun,
	//tulos on satunnainen kokonaisluku 0-5

	var tulos = Math.floor(6*randomi); 

	//lisätään tulokseen yksi, jolloin tulos on 
	//satunnaisluku 1-6
	tulos = tulos + 1;

	return tulos;

}

function arvonta(){

	var arpaluku = satunnaisluku(); //haetaan arvottu luku

	//sijoitetaan se paikoilleen
	document.getElementById("arpaluku").innerHTML = arpaluku;

}

</script>

<ul>
<h3>Pieni noppa </h3>

<div id="arpaluku" style="height:30px;"></div>
<input type="button" value="Heitä noppaa" onClick="arvonta();" />

</ul>



    Pieni noppa

Satunnaisgeneraattorin testi

Suoritetaan testaus siten, että pyöritetään noppaa useaan kertaan ja katsotaan tuleeko tulokseksi uskottavia lukuja. Ihanteellinen tilanne on se, että kaikkia arvoja tulee tasaisesti.

Toisin sanoen, mitä enemmän heittoja on, niin sitä tarkemmin saatujen noppalukujen prosenttiosuudet heittojen kokonaismäärästä vastaavat toisiaan. Samalla virhe yksittäisessä prosenttiosuudessa, joka on teoreettisesti 1/6 = 16.66666... %, pitäisi pienentyä.

Noppaluku 1 Noppaluku 2 Noppaluku 3 Noppaluku 4 Noppaluku 5 Noppaluku 6
Kpl 0 0 0 0 0 0
Osuus (%) 0 0 0 0 0 0
Virhe (%) 0 0 0 0 0 0