A InfoWiki wikiből
Tartalomjegyzék |
Date típus
Gyakran van (lehet) szükség a JS kódban dátum és idő kezelése. Ezalatt nem egyszerűen dátum tárolását értjük - az megoldható lenne string formában is. Azonban ha el kell dönteni hogy egy dátum létező-e (nincs pl. február 30), a string alak már nem elég hatékony.
A dátum alak egyéb előnyöket is nyújt. Egy dátum alapján eldönthető, hogy az adott nap a hét melyik napja, a hónap hanyadik napja, stb. Kiszámítható az előző napi dátum, a következő heti dátum, stb.
Dátum készítése
A dátum típusú érték valójában dátumot és időt is leír, ezért talán találóbb lett volna a DateTime típusnév. Az aktuális dátumot (és időt) a new Date() módon kérhetjük le:
var d = new Date();
A new Date() forma a Date osztálybeli példányt készíti el, mint ahogy azt az OOP nyelveken megszokhattuk. Hasonlóan az OOP nyelvek esetén, a new a memóriafoglalást végzi, a Date az osztály neve, a Date() a konstruktor hívását jelöli.
Az elkészült példány a kliens oldali számítógép aktuális dátumát és idejét kéri le (mivel a JS kód a kliens számítógépen, a böngészőben fut). A dátum változóra (példány) metódusokat alkalmazhatunk. A lekérdező metódusok nevei get-el kezdődnek (a JS nyelv a Java-hoz hasonlóan nem ismeri a property fogalmát).
Dátummal kapcsolatos metódusok:
- getYear() megadja az 1990 óta eltelt évek számát
- getFullYear() megadja az évek számát
- getMonth() a hónap sorszámát adja meg (0=január, 11=december)
- getDate() megadja a hónapon belüli nap sorszámát (1..31)
- getDay() a héten belüli nap sorszáma (0=vasárnap, 1=hétfő, ..., 6=szombat)
var d = new Date(); if (d.getMonth()==0) alert("január");
Idővel kapcsolatos metódusok:
- getHours() az órák száma (0..23)
- getMinutes() a percek száma (0..59)
- getSeconds() a másodpercek száma (0..59)
- getMilliseconds() az ezredmásodpercek száma (0..999)
Átalakítás egész számmá
Teljes dátum és idő átalakítása egész értékké:
- getTime()
A getTime() függvény valójában az eltel ezredmásodpercek számát adja meg 1970 január 1 óta. Ez 2009-ben már egy hatalmas nagy számérték (39 év, évente 365*24*60*60*1000). Egy ilyen hosszú egész szám első pillantásban nem tűnik hasznosnak, de valójában nagyon is sok helyen használhatjuk fel:
- két dátumot ez alapján nagyon könnyű összehasonlítani, melyik a kisebb vagy a nagyobb
- könnyű kiszámítani a rákövetkező órai dátumot (hozzá kell adni 60*1000-t)
Dátum alakítása string-re
A dátumot különböző előre definiált formátumok szerint alakíthatjuk át szöveggé:
- toLocaleString()
- toDateString()
- toTimeString()
Adott időpontú dátum létrehozása
A Date paraméteres konstruktorai segítségével nem csak az aktuális dátum és időhöz kapcsolódó példányt, hanem adott időponthoz tartozó példányt is létrehozhatunk:
var a = new Date(1994,11,23); var b = new Date(2003,3,12,10,12,32);
Az a változóba a 1994.11.23 0:0:0 dátum kerül be, míg a b változóba a 2003.03.12 10:12:31 dátum lesz.
Dátum módosítása
A korábban megadott get metódusok párjai a set metódusok.
- setFullYear(n) az év számát beállítja
- setMonth(n) a hónap sorszámát állítja be
- setDate(n) beállítja a hónapon belüli napsorszámot
- setHours(n) az órák számát állítja be
- setMinutes(n) a percek számát állítja be
- setSeconds(n) a másodpercek számát állítja be
- setMilliseconds(n) az ezredmásodpercek számát állítja be
Ezen felül használható a setTime(n), melynek segítésével egy egész szám alapján előállítja a hozzá tartozó dátumot és időt. Ezzel erős fegyverhez juthatunk:
var b = new Date(2003,3,12,10,12,32); var c = new Date(); c.setTime(b.getTime()+1000);
A fenti példában a c dátum a b dátumhoz képest 1 másodperccel későbbi időpontot fogja tartalmazni.