Kreiranje datuma
Datum se kreira kao instanca objekta Date, korišćenjem operatora new. Postoji više načina a razlika među njima je samo u tome kako se zadaje vrednost koju će tako kreirani datum imati.
Ne zaboravite da je nebitno da li vrednost datumskog objekta nazivamo datum ili vreme, uvek se misli na ukupni podatak koji sadrži i datum i vreme do nivoa milisekunde.
Neki od češće korišćenih načina su sledeći:
new Date() | Datumski objekat sadrži lokalno vreme koje je bilo na računaru u trenutku kreiranja objekta. |
new Date(T) | Datumskom objektu se zadaje datum u tekstualnom obliku T. |
new Date(N) | Datumskom objektu se zadaje datum u obliku broja milisekundi N od početnog datuma. |
new Date(Y,M,D) | Datumskom objektu se zadaju godina Y, mesec M i dan D. Samo su godina i mesec obavezni. Vreme dobija vrednost 00:00. |
new Date(Y,M,D,H,I,S,N) | Prošireni oblik prethodnog načina - moguće je zadati apsolutno precizan datum. |
Najjednostavnije je zadati konstrukciju objekta bez argumenata.
var d = new Date();
Ovakav datumski objekat će imati vrednost onog vremenskog trenutka u kome je kreiran. Naravno, svakom datumskom objektu kasnije možemo menjati bilo koju komponentu vremena (godinu, mesec...).
Datum u numeričkom obliku
Pri konstrukciji je moguće zadati dva ili više numeričkih argumenata koji onda predstavljaju različite komponente datuma. Moguće je zadati najviše 7 parametara, s tim što su samo prva dva obavezna. Izostavljeni parametri se postavljaju na svoje minimalne vrednosti (dan na 1, sat, minut, sekunde i milisekunde na 0).
Numerički parametri predstavljaju datum po lokalnom vremenu (na računaru korisnika).
var d = new Date(Y,M);
var d = new Date(Y,M,D);
var d = new Date(Y,M,D,H);
var d = new Date(Y,M,D,H,I);
var d = new Date(Y,M,D,H,I,S);
var d = new Date(Y,M,D,H,I,S,N);
- Y - godina (ako se zada broj od 0..99, podrazumeva se 1900..1999)
- M - mesec od 0..11
- D - dan u mesecu 1..31
- H - sat 0..23
- I - minut 0..59
- S - sekunda 0..59
- N - milisekunda 0..999
Ako broj prevaziđe svoju logičku vrednost, datum se adekvatno preračunava. Tako bi 32. decembar u stvari bio 1. januar sledeće godine, a 24. sat bi bio ponoć sledećeg dana.
Ako se zada samo jedan broj, onda to nije godina, već broj milisekundi od početnog datuma.
var d = new Date(N);
Datum u tekstualnom obliku
Datum u tekstualnom obliku mora da se uklopi u sledeći šablon (pojednostavljeni ISO 8601 format). Ovaj format je malo lakši za "ručno" zadavanje.
YYYY-MM-DDTHH:mm:ss.sssZ
YYYY-MM-DDTHH:mm:ss.sss+HHmm
YYYY-MM-DDTHH:mm:ss.sss-HHmm
- YYYY - četvorocifrena godina
- MM - dvocifren mesec od 01-12
- DD - dvocifren datum od 01-31
- HH - dvocifren sat od 00-23
- mm - dvocifreni minuti od 00-59
- ss - dvocifrene sekunde od 00-59
- sss - trocifrene milisekunde od 000-999
Razlika između šablona je samo u predstavljanju vremenske zone.
- Z - označava univerzalno vreme (UTC - Coordinated Universal Time), odnosno srednje vreme po Griniču (GMT - Greenwich Mean Time)
- + - označava vreme istočno od Griniča (npr. Beograd bi bio +0100 tokom zime)
- - - označava vreme zapadno od Griniča (npr. Njujork bi bio -0500)
Drugi mogući tip tekstualnog šablona je IETF-compliant RFC 2822 timestamp. Ovaj format verovatno nećemo zadavati kao konstantu, ali dobro je znati da JavaScript datumski objekat ispisuje datum na taj način, pa se može koristiti za beleženje/razmenu datuma u tekstualnom obliku.
Primeri kreiranja datuma
var d = new Date(); // trenutno vreme
var dt = new Date("2015-01-05T15:30:00.000+0100"); // 5. januar 2015. u 15:30, CET
var dn = new Date(2015, 0, 5, 15, 30); // isti taj datum
var d1 = new Date(2015, 0, 35); // 4. februar 2015
var d2 = new Date(2015, 0, 15, 24, 30); // 16. januar 2015. 00:30 - pola sata posle ponoći
- T. Valentine, J. Reid (2013): JavaScript Programmer's Reference, Apress, New York
- A. Pehlivanian, D. Nguyen (2013): Jump Start JavaScript , SitePoint Pty. Ltd., Collingwood