Andrise programmeerimisalane WIKI
Aeg ja kuupäev
JavaScriptis on kõik kuupäevade ning aegadega seotud funktsioonid kogutud ühte objekti Date. Konstruktorfunktsiooni Date() on võimalik kasutada nii Date objekti loomiseks, kui ka tavafunktsioonina (sellisel juhul on tagastusväärtuseks hetke aeg stringi kujul). Samuti eksisteerivad mõned staatilised funktsioonid, mis kuuluvad vaid konstruktori enda juurde, mitte sellest tuletatud objektidele. Viimase näiteks oleks funktsioon Date.parse() tekstilisel kujul oleva ajastringi teisendamiseks ajaobjektiks.
Vastavalt standardile peab JavaScripti Date objekt olema võimeline esitama iga kuupäeva ja kellaaega millisekundi täpsusega 100 miljonit päeva enne ja peale 1. jaanuarit 1970. See tähendab umbkaudu +/- 273 785 aastat. Võrdluseks laialtlevinud Unix/POSIX timestamp loendur mis enamustes süsteemides on 32 bitine, ammendub juba 19. jaanuaril 2038.
Ajatempel
Ajatempel kujutab endast täisarvulist numbrit, mis tähistab kindlat aega. Selline numbriline kuju teeb erinevad arvutused aegadega suhteliselt lihtsaks. Kui näiteks keeltes PHP või Python on ajatempel kujul Unix/POSIX timestamp tähistades sekundite arvu alates 1. jaanuarist 1970, siis JavaScripti ajatempel loeb samast hetkest hoopis millisekundeid.
Thu Jun 04 2009 20:35:16 GMT+0300 (EEST) Unix/POSIX: 1244136916 JavaScript: 1244136916000
Tänu numbrilisele kujule on suhteliselt kerge leida kuupäevi alates- või enne mingit kindlat aega. Näiteks tänasest 30 päeva pärast oleva kuupäeva leiab järgnevalt.
var d = new Date(new Date().getTime() + 1000*3600*24*30);
Arvutus 1000*3600*24*30 tähendab 30 päeva millisekundites ning täpsemalt oleks see 1000 millisekundit * 3600 sekundit (1 tund) * 24 tundi (1 päev) * 30 päeva.
Date
Konstruktorfunktsiooni Date() saab operaatoriga new käivitada neljal erineval viisil. Kõikidel juhtudel on tulemuseks Date objekt, mis sisaldab mingit kindlat, konstruktorfunktsiooni sisendparameetritest sõltuvat aega. Objekti meetodite abil on siis võimalik selle saadud ajaväärtusega manipuleerida, tagastada ainult osa kuupäevast vms.
new Date(); new Date(ajatempel); new Date(aeg_teksti_kujul); new Date(aasta, kuu [, päev, tund, minut, sekund, ms]);
Juhul kui parameetrit pole määratud, saab loodava objekti ajaväärtuseks objekti loomise aeg. Ajatempel sisendina tähendab millisekundeid alates 1. jaanuar 1970. Aeg teksti kujul peab olema JavaScripti jaoks arusaadaval kujul, kahjuks näiteks MySQL DATETIME formaat YYYY-MM-DD HH:MM:SS selle jaoks ei sobi, tagastades vigase ajaväärtuse. Võimalik oleks aga kasutada kuju MM/DD/YYYY HH:MM:SS mis tuntakse ilusti ära. Üldiselt on toetatavad tekstiformaadid sõltuvad platvormist, seega tegelikult ei saa ühegi formaadi puhul teisenduse õigsuses lõpuni kindel olla.
Üksikute aja ja kuupäeva elementide esitamisel parameetritena numbrilisel kujul, on aasta ja kuu väärtused kohustuslikud ning ülejäänud 5 parameetrit valikulised. Juhul kui sisendiks anda ainult ainult aasta, peab funktsioon seda hoopis ajatempliks ja tagastab mitteoodatud tulemuse.
Juhul kui Date() on käivitatud ilma operaatorita new, jätab funktsioon parameetrid arvesse võtmata ning tagastab hetke aja stringi kujul.
Meeles tuleks ka pidada, et parameetrina antud aeg (kui selles pole üheselt märgitud ajatsooni näiteks GMT+0100 (Saksamaa)), tähistab alati lokaalset aega.
Meetodid
Date objekt sisaldab terve hulga erinevaid kasulikke meetodeid, mis abistavad ajaväärtustega tegelemisel.
getDate
Number date.getDate()
Meetod getDate tagastab Date objektis määratud lokaalse aja kuupäeva väärtuse vahemikus 1..31.
var aeg = new Date(2000,1,1); aeg.getDate(); // 1
getDay
Number date.getDay()
Meetod getDay tagastab Date objektis määratud lokaalse aja nädalapäeva väärtuse vahemikus 0..6. Väärtus 0 tähistab pühapäeva ning väärtused 1..6 esmaspäeva-laupäeva.
getFullYear
Number date.getFullYear()
Meetod getFullYear tagastab Date objektis määratud lokaalse aja aasta väärtuse neljakohalise numbrina.
new Date().getFullYear(); // 2009
getHours
Number date.getHours()
Meetod getHours tagastab Date objektis määratud lokaalse aja tunni väärtuse vahemikus 0..23.
getMilliseconds
Number date.getMilliseconds()
Meetod getMilliseconds tagastab Date objektis määratud lokaalse aja millisekundite väärtuse viimasest sekundist vahemikus 0..999.
getMinutes
Number date.getMinutes()
Meetod getMinutes tagastab Date objektis määratud lokaalse aja minutite väärtuse viimasest tunnist vahemikus 0..59.
getMonth
Number date.getMonth()
Meetod getMonth tagastab Date objektis määratud lokaalse aja kuu väärtuse vahemikus 0..11, kus 0 on jaanuar ning 11 detsember.
getSeconds
Number date.getSeconds()
Meetod getSeconds tagastab Date objektis määratud lokaalse aja sekundite väärtuse viimasest minutist vahemikus 0..59.
getTime
Number date.getTime()
Meetod getTime tagastab Date objektis määratud lokaalse aja väärtuse täisnumbri kujul millisekunditena alates 1. jaanuarist 1970.
Sellisel numbrilise kujul aja esitamine on kasulik kahe erineva aja vahel seose leidmiseks - kas siis teades kindlat vahemikku (näiteks 30 päeva) teada saada teist kuupäeva seoses olemasolevaga või näiteks kahe kuupäeva vahelise aja leidmiseks.
var d = new Date(new Date().getTime() + (100*3600*24*30)); alert('30 päeva pärast on aeg '+d); var p = (new Date(2100,1,1).getTime() - new Date().getTime())/(100*3600*24) alert('Aastani 2100 on veel jäänud '+p+' päeva');
getTimezoneOffset
Number date.getTimezoneOffset()
Meetod getTimezoneOffset tagastab Date objektis määratud lokaalse aja erinevuse GMT ajavööndi ajast minutites. Eestis on selleks väärtuseks talvel -120 ning suvel -180. Antud suurus on esitatud tundide asemel minutites, kuna osades riikides ei ole ajavööndid täistunnillise väärtusega, näiteks Indias on ajavöönd -05:30.
Kasulik on seda väärtust teada juhul kui soovitakse suvalises maailma punktis asuvale kasutajale näidata aega sõltuvalt tema asukohast. Server annab veebilehele aja mingi kindla ajavööndi, näiteks GMT järgi ning veebilehel olev JavaScript kirjutab selle aja vastavalt kasutaja enda vööndile dünaamiliselt üle.
getUTCDate
Number date.getUTCDate()
Meetod getUTCDate tagastab Date objektis määratud aja universaalse vormi (GMT vööndi järgi) kuupäeva väärtuse vahemikus 1..31.
getUTCDay
Number date.getUTCDay()
Meetod getUTCDay tagastab Date objektis määratud aja universaalse vormi (GMT vööndi järgi) nädalapäeva väärtuse vahemikus 0..6. Väärtus 0 tähistab pühapäeva ning väärtused 1..6 esmaspäeva-laupäeva.
getUTCFullYear
Number date.getUTCFullYear()
Meetod getUTCFullYear tagastab Date objektis määratud aja universaalse vormi (GMT vööndi järgi) aasta väärtuse neljakohalise numbrina.
getUTCHours
Number date.getUTCHours()
Meetod getUTCHours tagastab Date objektis määratud aja universaalse vormi (GMT vööndi järgi) tunni väärtuse vahemikus 0..23.
getUTCMilliseconds
Number date.getUTCMilliseconds()
Meetod getUTCMilliseconds tagastab Date objektis määratud aja universaalse vormi (GMT vööndi järgi) millisekundite väärtuse viimasest sekundist vahemikus 0..999.
getUTCMinutes
Number date.getUTCMinutes()
Meetod getUTCMinutes tagastab Date objektis määratud aja universaalse vormi (GMT vööndi järgi) minutite väärtuse viimasest tunnist vahemikus 0..59.
getUTCMonth
Number date.getUTCMonth()
Meetod getUTCMonth tagastab Date objektis määratud aja universaalse vormi (GMT vööndi järgi) kuu väärtuse vahemikus 0..11, kus 0 on jaanuar ning 11 detsember.
getUTCSeconds()
Number date.getUTCSeconds()
Meetod getUTCSeconds tagastab Date objektis määratud aja universaalse vormi (GMT vööndi järgi) sekundite väärtuse viimasest minutist vahemikus 0..59.
getYear
Number date.getYear()
Meetod getYear tagastab Date objektis oleva aja aasta väärtuse, millest lahutatakse suurus 1900. Algselt oli see mõeldud kahekohalise aastanumbri leidmiseks (nt. 1996 - 1900 = 96), kuid alates aastast 2000 on funktsioon muutunud sisuliselt kasutuks, tagastades aasta väärtuseks segasevõitu kolmekohalise numbri.
new Date().getYear(); // 109
Meetodi getYear asemel tuleks õige tulemuse saamiseks kasutada meetodit getFullYear.
parse
Number Date.parse(String ajastring)
Meetod Date.parse on globaalse objekti Date staatiliselt meetodiks. See tähendab, et meetod ei liigu Date tüüpi objektide loomisel uute objektide juurde kaasa. Meetod võtab sisendiks stringi kujul ajaväärtuse ja teisendab selle millisekundite kujul ajatempliks.
var t = Date.parse("12/24/2009 13:30:00"); alert(t); // 1261650600000
Meetod on kasulik juhul, kui on tarvis teisendada ajastring ajatempliks, kuid ei soovita luua selle jaoks uut Date tüüpi objekti.
setDate
Number date.setDate(Number päev)
Meetod setDate võtab parameetriks kuupäeva (kohaliku aja järgi) vahemikus 1..31 ning seab selle Date objektiga seotud aja kuupäevaks. Meetodi tagastusväärtuseks on saadud aeg millisekundites.
var d = new Date(2000,3,13); d.setDate(14); // 955659600000
setFullYear
Number date.setFullYear(Number aasta [, Number kuu [, Number päev]])
Meetod setFullYear võtab parameetriks neljakohalise numbriga aasta (kohaliku aja järgi) ning seab selle Date objektiga seotud aja aastaks. Meetodi tagastusväärtuseks on saadud aeg millisekundites.
Valikuliselt on sama meetodiga võimalik seada ka kuud ning kuupäeva. Selleks tuleks kasutada kahte lisaparameetrit kuu (vahemikus 0..11) ning päev (vahemikus 1..31).
setHours
Number date.setHours(Number tund [, Number minut [, Number sekund [, Number ms]]])
Meetod setHours võtab parameetriks tunni (kohaliku aja järgi) vahemikus 0..23 ning seab selle Date objektiga seotud aja tunniks. Meetodi tagastusväärtuseks on saadud aeg millisekundites.
Meetodil on veel kolm valikulist lisaparameetrit, millega saab seada ka minutit, sekundit ja millisekundit.
setMilliseconds
Number date.setMilliseconds(Number ms)
Meetod võimaldab seada Date objekti millisekundiosa väärtust (kohaliku aja järgi). Parameeter ms peab olema vahemikus 0..999. Meetodi tagastusväärtuseks on saadud aeg millisekundites.
setMinutes
Number date.setMinutes(Number minutid [, Number sekund [, Number ms]])
Meetod setMinutes võtab parameetriks minuti väärtuse (kohaliku aja järgi) vahemikus 0..59 ning seab selle Date objektiga seotud aja minuti väärtuseks. Meetodi tagastusväärtuseks on saadud aeg millisekundites.
Meetodil on veel kaks valikulist lisaparameetrit, millega saab seada ka sekundit ja millisekundit.
setMonth
Number date.setMonth(Number kuu [, Number päev])
Meetod setMonth võtab parameetriks kuu väärtuse (kohaliku aja järgi) vahemikus 0..11 ning seab selle Date objektiga seotud aja kuu väärtuseks. Meetodi tagastusväärtuseks on saadud aeg millisekundites.
Valikuliselt on sama meetodiga võimalik seada ka kuupäeva. Selleks tuleks kasutada kuupäeva lisaparameetrit, kus kuupäev on vahemikus 1..31.
setSeconds
Number date.setSeconds(Number sekund [, Number ms])
Meetod setSeconds võtab parameetriks sekundi väärtuse (kohaliku aja järgi) vahemikus 0..59 ning seab selle Date objektiga seotud aja sekundi väärtuseks. Meetodi tagastusväärtuseks on saadud aeg millisekundites.
Meetodil on veel valikuline lisaparameeter, millega saab seada ka millisekundit.
setTime
Number date.setTime(Number ajatempel)
Meetodiga saab seada Date objekti ajaväärtust andes sellele parameetriks ajatempli millisekundite kujul. Ajatempli genereerimiseks on mugav kasutada funktsiooni Date.parse.
var d = new Date(); d.setTime(Date.parse('2005/12/31 15:50:00')); // 1136033400000
Meetodi tagastusväärtuseks on sisendiks saadud millisekundite väärtus.
setUTCDate
Number date.setUTCDate(Number päev)
Meetod setUTCDate võtab parameetriks kuupäeva (universaalse GMT aja järgi) vahemikus 1..31 ning seab selle Date objektiga seotud aja kuupäevaks. Meetodi tagastusväärtuseks on saadud aeg millisekundites.
var d = new Date(2000,3,13); d.setUTCDate(14); // 955746000000
setUTCFullYear
Number date.setUTCFullYear(Number aasta [, Number kuu [, Number päev]])
Meetod setUTCFullYear võtab parameetriks neljakohalise numbriga aasta (universaalse GMT järgi) ning seab selle Date objektiga seotud aja aastaks. Meetodi tagastusväärtuseks on saadud aeg millisekundites.
Valikuliselt on sama meetodiga võimalik seada ka kuud ning kuupäeva. Selleks tuleks kasutada kahte lisaparameetrit kuu (vahemikus 0..11) ning päev (vahemikus 1..31).
setUTCHours
Number date.setUTCHours(Number tund [, Number minut [, Number sekund [, Number ms]]])
Meetod setUTCHours võtab parameetriks tunni (universaalse GMT järgi) vahemikus 0..23 ning seab selle Date objektiga seotud aja tunniks. Meetodi tagastusväärtuseks on saadud aeg millisekundites.
Meetodil on veel kolm valikulist lisaparameetrit, millega saab seada ka minutit, sekundit ja millisekundit.
setUTCMilliseconds
Number date.setUTCMilliseconds(Number ms)
Meetod võimaldab seada Date objekti millisekundiosa väärtust (universaalse GMT järgi). Parameeter ms peab olema vahemikus 0..999. Meetodi tagastusväärtuseks on saadud aeg millisekundites.
setUTCMinutes
Number date.setUTCMinutes(Number minutid [, Number sekund [, Number ms]])
Meetod setUTCMinutes võtab parameetriks minuti väärtuse (universaalse GMT järgi) vahemikus 0..59 ning seab selle Date objektiga seotud aja minuti väärtuseks. Meetodi tagastusväärtuseks on saadud aeg millisekundites.
Meetodil on veel kaks valikulist lisaparameetrit, millega saab seada ka sekundit ja millisekundit.
setUTCMonth
Number date.setUTCMonth(Number kuu [, Number päev])
Meetod setUTCMonth võtab parameetriks kuu väärtuse (universaalse GMT järgi) vahemikus 0..11 ning seab selle Date objektiga seotud aja kuu väärtuseks. Meetodi tagastusväärtuseks on saadud aeg millisekundites.
Valikuliselt on sama meetodiga võimalik seada ka kuupäeva. Selleks tuleks kasutada lisaparameetrit päev (vahemikus 1..31).
setUTCSeconds
Number date.setUTCSeconds(Number sekund [, Number ms])
Meetod setUTCSeconds võtab parameetriks sekundi väärtuse (universaalse GMT järgi) vahemikus 0..59 ning seab selle Date objektiga seotud aja sekundi väärtuseks. Meetodi tagastusväärtuseks on saadud aeg millisekundites.
Meetodil on veel valikuline lisaparameeter, millega saab seada ka millisekundit.
setYear
Number date.setYear(Number aasta)
Meetod setYear võtab sisendiks aasta väärtuse (kohaliku aja järgi). Juhul kui aasta väärtus jääb vahemikku 0..99, liidetakse sellele väärtus 1900. Tegu on praeguseks ajaks suhteliselt kasutu featuuriga ning seega tuleb jääda neljakohaliste numbrite juurde.
toDateString
String date.toDateString()
Meetod väljastab kuupäeva väärtuse kohaliku aja järgi stringina inimloetaval kujul. Täpne vorm sõltub kasutatavast platvormist.
new Date().toDateString(); // Fri Jun 05 2009
toGMTString
String date.toGMTString()
Meetod väljastab kuupäeva ja aja väärtuse universaalse GMT aja järgi stringina inimloetaval kujul. Täpne vorm sõltub kasutatavast platvormist.
new Date().toGMTString(); // Thu, 04 Jun 2009 22:10:17 GMT
toLocaleDateString
String date.toLocaleDateString()
Meetod väljastab kuupäeva väärtuse kohaliku aja järgi stringina inimloetaval kujul, arvestades kasutaja lokaali. Täpne vorm sõltub kasutatavast platvormist.
new Date().toLocaleDateString(); // 06/05/2009
toLocaleString
String date.toLocaleString()
Meetod väljastab kuupäeva ja aja väärtuse kohaliku aja järgi stringina inimloetaval kujul, arvestades kasutaja lokaali. Täpne vorm sõltub kasutatavast platvormist.
new Date().toLocaleString(); // Fri Jun 5 01:14:31 2009
toLocaleTimeString
String date.toLocaleTimeString()
Meetod väljastab aja väärtuse kohaliku aja järgi stringina inimloetaval kujul, arvestades kasutaja lokaali. Täpne vorm sõltub kasutatavast platvormist.
new Date().toLocaleTimeString(); // 01:15:54
toString
String date.toString()
Meetod toString tagastab kuupäeva ja aja väärtuse kohaliku järgi stringina inimloetaval kujul. Täpne vorm sõltub kasutatavast platvormist.
new Date().toString(); // Fri Jun 05 2009 01:19:57 GMT+0300 (EEST)
toTimeString
String date.toTimeString()
Meetod väljastab aja väärtuse kohaliku aja järgi stringina inimloetaval kujul. Täpne vorm sõltub kasutatavast platvormist.
new Date().toTimeString(); // 01:17:08 GMT+0300 (EEST)
toUTCString
String date.toUTCString()
Meetod väljastab kuupäeva ja aja väärtuse universaalse GMT vööndiaja järgi stringina inimloetaval kujul. Täpne vorm sõltub kasutatavast platvormist.
new Date().toLocaleString(); // Thu, 04 Jun 2009 22:17:33 GMT
UTC
Number Date.UTC([Number aasta [, Number kuu [, Number päev [, Number tund [, Number minut [, Number sekund [, Number ms]]]]]]])
Meetod UTC on sarnaselt Date.parse meetodiga globaalse objekti Date staatiliseks meetodiks. Meetod võtab sisendiks GMT ajavööndi aja 7 parameetri kujul ning tagastab ajatempli millisekunditena. Kasutatavad 7 parameetrit on kõik valikulised.
Meetodit on mugav kasutada Date objekti loomiseks, kui teada on universaalne GTM aeg, kuid konstruktor Date eeldab lokaalset aega.
var d = new Date(Date.UTC(aasta, kuu, päev, tund, minut, sekund, ms));
Sellisel juhul loob Date.UTC GMT aja järgi ajatempli (mis on alati universaalne) ning edastab selle konstruktorfunktsiooni Date parameetriks.
valueOf
Number date.valueOf()
Sama mis getTime. Meetod tagastab Date objekti ajaväärtuse ajatemplina millisekundite väärtusena. Meetod on vajalik teisendusteks, kus Date objekti üritatakse kasutada numbrilises kontekstis.
Käidud rada: • massiivid • script_tag • nimeruumid • operaatorid • matemaatika • sissejuhatus • funktsioonid • andmetueuebid • xmlhttprequest • aeg_ja_kuupaev