Pentru a lucra cu data zilei si perioade de timp in ActionScript 3 se foloseste obiectul (sau clasa) Date.
Ca si la celelalte tipuri de clase, pentru a folosi obiectul Date trebuie creata o instanta a lui (cu operatorul new), dupa care pot fi utilizate proprietatile si metodele clasei Date la acea instanta.
Sintaxa generala de creare a unei instante Date este:
var nume_ins:Date = new Date();
- Cu aceasta formula se memoreaza data curenta intr-o variabila "nume_ins", dupa cum se observa in rezultatul returnat de "trace()" din exemplul urmator.
var dat:Date = new Date();
trace(dat); // Tue Nov 9 09:53:59 GMT+0200 2010
• Data reprezinta orice punct in timp. Se pot aplica la crearea instantei Date o serie de valori ca parametri: An, Luna, Zi a lunii, Ora, Minut, Secunda si Milisecunde; pentru a utiliza o anumita data din timp. Sintaxa generala este:
var nume_ins:Date = new Date(an, luna, zi, ora, minut, secunda, milisecunde);
- Trebuie inclusi cel putin 2 parametri, cel putin Anul si Luna (ceilalti vor avea valoarea implicita 0)
- Prima luna din an (Ianuarie) are valoarea 0, iar ultima luna (Decembrie) are valoarea 11. Orele sunt de la 0 la 23 (24 e ora 0).
Data 0 e considerata data Unix (cand a aparut) 1-Ianuarie-1970.
Exemplu:
var dat:Date = new Date(2010, 0, 15);
trace(dat); // Fri Jan 15 00:00:00 GMT+0200 2010
var dat2:Date = new Date(2010, 11, 15, 18, 22, 32, 88);
trace(dat2); // Wed Dec 15 18:22:32 GMT+0200 2010
• Un alt mod de a prelua un anumit moment din timp este adaugarea la parametru a unui sir reprezentand acea data, dupa cum e in exemplele de mai jos. Sirul trebuie sa contina cel putin Anul, Luna si Ziua.
var dat1:Date = new Date('1/15/2010'); // Luna/Zi/An
trace(dat1); // Fri Jan 15 00:00:00 GMT+0200 2010
var dat2:Date = new Date('Sun Jan 28 2007');
trace(dat2); // Sun Jan 28 00:00:00 GMT+0200 2007
var dat3:Date = new Date('15 Oct 1976');
trace(dat3); // Fri Oct 15 00:00:00 GMT+0300 1976
var dat4:Date = new Date('Sun Jan 28 2007 14:16:12');
trace(dat4); // Sun Jan 28 15:16:12 GMT+0200 2007
-
Daca sirul adaugat nu poate fi recunoscut si transferat ca data, obiectul Date va returna NaN
• Pentru a verifica daca o data este valida se poate folosi formula:
isNaN(nume_ins.valueOf())
- Aceasta verifica daca valoarea lui "nume_ins" e un numar. Returneaza
true daca NU e numar, altfel,
false.
Exemplu:
var dat:Date = new Date('Ieri');
trace(dat); // Invalid Date
trace(isNaN(dat.valueOf())); // true
Zona de timp folosita poate fi timpul local, apare ca GMT; sau Timpul Universal, abreviat UTC (este timpul civil al meridianului 0, determinat prin masurare astronomica).
Proprietati si metode obiect Date
Dupa ce a fost creata o Instanta Date, se pot accesa si modifica datele din ea folosind proprietatile si metodele obiectului.
De exemplu, daca se doreste obtinerea orei si numarul zilei curente (care e de la 1 la 31) se pot utiliza instructiunile ca in urmatorul exemplu:
// Seteaza o instanta la obiectul Date
// in care va fi stocata data si timpul curent
var dat:Date = new Date();
// Preia ziua
var ziua:int = dat.date; // sau dat.getDate();
// Preia ora
var ora:int = dat.getHours(); // sau dat.hours;
// Afisaza in Output ziua si ora
trace(ziua); // 9
trace(ora); // 11
- Modificarea unei date, a anumitor parti din ea (an, luna, ora, ...), se face dupa cum puteti vedea in acest exemplu:
// Seteaza o instanta la obiectul Date
// va stoca data si timpul din ziua de: Duminica, 28-Ianuarie-2007, ora 14:16:12
var dat:Date = new Date('Sun Jan 28 2007 14:16:12');
// Seteaza o noua valoare pt. zi
dat.date = 11; // sau dat.setDate(11);
// Seteaza o noua valoare pt. ora
dat.setHours(8); // sau dat.hours = 8;
// Verifica in Output data obtinuta
trace(dat); // Thu Jan 11 08:16:12 GMT+0200 2007
- S-a modificat numarul zilei la valoarea 11 (initial 28) si al orei 8 (initial 14). Implicit a modificat si ziua din saptamana (vedeti in rezultatul dat de "trace").
- Observati cum sunt aplicate proprietatile si metodele obiectului.
Proprietati obiect Date
- date - ziua din luna (intre 1 si 31)
- dateUTC - ziua din luna (intre 1 si 31), in acord cu timpul universal (UTC)
- day - numarul zilei din saptamana (0 pt. Duminica, 1 pt. Luni, ...)
- dayUTC - numarul zilei din saptamana (0 pt. Duminica, 1 pt. Luni, ...), in acord cu timpul universal (UTC)
- fullYear - anul intreg (format din 4 caractere)
- fullYearUTC - anul intreg (format din 4 caractere), in acord cu timpul universal
- hours - ora (un numar intre 0 si 23)
- hoursUTC - ora (un numar intre 0 si 23), timp UTC
- milliseconds - milisecunde (un numar intre 0 si 999)
- millisecondsUTC - milisecunde (un numar intre 0 si 999), in acord cu timpul universal
- minutes - minute (un numar intre 0 si 59)
- minutesUTC - minute (un numar intre 0 si 59), in acord cu timpul universal
- month - numarul lunii din an (0 pt. Ianuarie, 1 pt. Februarie, ..., 11 pt. Decembrie)
- monthUTC - numarul lunii din an (0 pt. Ianuarie, 1 pt. Februarie, ..., 11 pt. Decembrie), timp UTC
- seconds - secunde (un numar intre 0 si 59)
- secondsUTC - secunde (un numar intre 0 si 59), in acord cu timpul universal
- time - numarul de milisecunde de la 1-Ianuarie-1970
- timezoneOffset - diferenta in minute dintre timpul universal (UTC) si timpul local (al calculatorului unde ruleaza prezentarea)
Metode obiect Date
- getDate() - returneaza numarul zilei din luna (un numar intre 1 si 31)
- getDay() - returneaza numarul zilei din saptamana (0 pt. Duminica, 1 pt. Luni, ...)
- getFullYear() - returneaza anul intreg (format din 4 caractere)
- getHours() - obtine ora (un numar intre 0 si 23)
- getMilliseconds() - obtine milisecundele (un numar intre 0 si 999)
- getMinutes() - obtine minutele (un numar intre 0 si 59)
- getMonth() - returneaza numarul lunii din an (0 pt. Ianuarie, 1 pt. Februarie, ..., 11 pt. Decembrie)
- getSeconds() - returneaza secundele (un numar intre 0 si 59)
- getTime() - obtine numarul de milisecunde de la 1-Ianuarie-1970
- getTimezoneOffset() - obtine diferenta in minute dintre timpul universal (UTC) si timpul local (al calculatorului unde ruleaza prezentarea)
- getUTCDate() - returneaza numarul zilei din luna (un numar intre 1 si 31), in acord cu timpul universal
- getUTCDay() - returneaza numarul zilei din saptamana (0 pt. Duminica, 1 pt. Luni, ...), in acord cu timpul universal
- getUTCFullYear() - returneaza anul intreg (format din 4 caractere), in acord cu timpul universal
- getUTCHours() - obtine ora (un numar intre 0 si 23), dupa timpul universal
- getUTCMilliseconds() - obtine milisecundele (un numar intre 0 si 999), dupa timpul universal
- getUTCMinutes() - obtine minutele (un numar intre 0 si 59), dupa timpul universal
- getUTCMonth() - returneaza numarul lunii din an (0 pt. Ianuarie, 1 pt. Februarie, ..., 11 pt. Decembrie), timp UTC
- getUTCSeconds() - returneaza secundele (un numar intre 0 si 59), dupa timpul universal
- parse('data') - converteste sirul de la 'data' intrun numar ce reprezinta milisecundele trecute de la 1-Ianuarie-1970 pana la acea data
- setDate(nr_zi) - seteaza numarul zilei (intre 1 si 31) si returneaza noul timp in milisecunde
- setFullYear(an, luna, zi) - seteaza anul, luna si ziua, daca sunt mentionate (acestea fiind optionale) si returneaza noul timp in milisecunde
- setHours(ore, minute, secunde, milisecunde) - defineste ora (ultimii 3 parametri sunt optionali), returneaza noul timp in milisecunde
- setMilliseconds(ms) - seteaza milisecundele cu valoarea de la 'ms' (un nr. intre 0 si 999) si returneaza noul timp in milisecunde
- setMinutes(minute, secunde, milisecunde) - seteaza minutul (ultimii 2 parametri sunt optionali) si returneaza noul timp in milisecunde
- setMonth(luna, ziua) - seteaza luna ('ziua' e optional) si returneaza noul timp in milisecunde
- setSeconds(secunde, milisecunde) - defineste secundele ('milisecunde' e optional) si returneaza noul timp in milisecunde
- setTime(ms) - seteaza data in milisecunde, de la 1-Ianuarie-1970, cu cea specificata la 'ms'
- setUTCDate(nr_zi) - seteaza numarul zilei, la zona de timp UTC (intre 1 si 31) si returneaza noul timp in milisecunde (timpul UTC)
- setUTCFullYear(an, luna, zi) - seteaza anul, luna si ziua (la zona de timp UTC), daca sunt mentionate (acestea fiind optionale) si returneaza noul timp in milisecunde
- setUTCHours(ore, minute, secunde, milisecunde) - defineste ora, la zona de timp UTC (ultimii 3 parametri sunt optionali), returneaza noul timp in milisecunde
- setUTCMilliseconds(ms) - seteaza milisecundele, la timpul UTC, cu valoarea de la 'ms' (un nr. intre 0 si 999) si returneaza noul timp in milisecunde
- setUTCMinutes(minute, secunde, milisecunde) - seteaza minutul, la timpul UTC (ultimii 2 parametri sunt optionali) si returneaza noul timp in milisecunde
- setUTCMonth(luna, ziua) - seteaza luna, la zona de timp UTC ('ziua' e optional) si returneaza noul timp in milisecunde
- setUTCSeconds(secunde, milisecunde) - defineste secundele, timp UTC ('milisecunde' e optional) si returneaza noul timp in milisecunde
- toDateString() - returneaza un sir reprezentand ziua si data, fara ora si zona de timp
- toLocaleDateString() - la fel ca si "toDateString()"
- toLocaleString() - returneaza un sir cu data si timpul zilei (ora cu AM, PM), fara zona de timp
- toLocaleTimeString() - returneaza un sir cu timpul zilei (ora cu AM, PM), fara data zilei, an sau zona de timp
- toString() - returneaza un sir cu ziua, data, ora si zona de timp
- toTimeString() - returneaza un sir cu ora si zona de timp, fara ziua si data
- toUTCString() - returneaza un sir cu ziua, data si ora UTC
Expresia flash.utils.getTimer() returneaza numarul de milisecunde de cand Flash Player-ul e pornit.
Puteti vedea cum se foloseste practic obiectul Date si functiile lui intr-o prezentare Flash, in tutorialul
Creare ceas.