II. Notiuni de baza9. Data si timp

Moderatori: Moderators, Founder

Mesaj

Avatar utilizator
CEO
Posts
3802
Operatii comune cu indicatori de timp

Limbajul PHP ofera solutii simple (dar puternice) pentru lucrul cu data si timpul. In versiunile mai noi (dupa 5.1) sunt introduse facilitati avansate cum ar fi DST (Daylight Saving Time), Timezones, Date Intervals, s.a. Inainte de acestea insa lucrul cu timpul se realiza folosind Unix timestamp.

Conceptul de Unix timestamp desemneaza numarul de secunde scurse de la 1 ianuarie 1970 (cand se considera ca a inceput era Unix).

Unix Timestamp-ul curent:
1733423955
Fiind vorba de un numar pozitiv ce are mereu aceeasi referinta, este usor sa se realizeze operatii cum ar fi scaderea, adunarea sau compararea a doua date reprezentate printr-un Unix timestamp.

Mai jos sunt cateva aplicatii menite sa evidentieze cat de usor se pot manipula date si ore in PHP.
----------------

Cum aflu o data din trecut sau viitor?

Sunt mai multe posibilitati. Se poate pleaca de la o data cunoscuta (pentru care avem Unix timestamp) si prin adunari/scaderi de secunde se afla data dorita (vezi aplicatia de mai jos). Sau se poate parsa o data folosind strtotime. Aceste solutii nu sunt intotdeauna aplicabile, iar in aceste cazuri se foloseste functia mktime.

Functia mktime primeste ca parametri anul, luna, ziua, ora pentru care se doreste aflarea detaliilor. Rezultatul este un timestamp ce poate fi formatat dupa cum se doreste.

Important: inainte de PHP 5.1.0, timestamp-urile negative nu erau suportate in unele sisteme (inclusiv Windows). De aceea domeniul valid al anilor era limitat intre 1970 si 2038.
-------------------

Cum se formateaza data sau ora?

Formatarea datei sau a orei se poate realiza usor folosind functia date. Cu ajutorul acesteia se pot "extrage" doar acele parti din data care sunt necesare si se poate specifica formatul dorit. Spre exemplu, folosind functia date putem afisa data in format lung (de genul: "marti, 30 septembrie 2001") sau scurt (30.11.2001) sau cu aceeasi functie putem afisa ora sau oricare combinatie a celor doua.

Formatul se specifica print-un text format din caractere ce au o semnificatie anume, transmis ca parametru functiei date. Pentru detalii complete despre fiecare caracter in parte accesati http://www.php.net/manual/ro/function.date.php.

"; // afiseaza 20:39:15 echo date("Y-m-d") . "
"; // afiseaza 2024-12-05 echo date("F j, Y, g:i a") . "
"; // afiseaza December 5, 2024, 8:39 pm echo date("l") . "
"; // afiseaza Thursday # se poate specifica un al doilea parametru ce reprezinta data/ora care se formateaza echo date("d-m-Y H:i:s", $acum) . "
"; // afiseaza 05-12-2024 20:39:15 echo date("D, M d, Y", 1072915200) . "
"; // afiseaza Thu, Jan 01, 2004 # combinat cu mktime, se pot obtine informatii despre zile din trecut sau viitor # de exemplu, ce zi a fost pe 4 iulie 2000 $iulie4 = mktime( 0, 0, 0, 7, 4, 2000 ); # aflu timestamp-ul echo date( 'l', $iulie4 ); # formatez acel timestamp - extrag doar ziua // afiseaza Tuesday ?>
--------------------------

Cum determin ce zi si ora va fi peste 480 ore?

Pentru a efectua usor operatii cu zile si ore, se va folosi formatul de data Unix (UNIX timestamp), returnat de functia time(). Practic, data este afisata ca numarul de secunde scurs de la 1 ianuarie 1970, ora 00:00. Avand aceasta noua perspectiva (de a privi datele ca un numar de secunde), operatiile cu date (de genul 'cat va fi peste 2 zile', 'ce ora a fost acum xxx minute', etc) devin extrem de simple luand forma unor simple scaderi si adunari de secunde.
---------------------------------

Cum validez o data sau un timp?

Sunt mai multe modalitati de a valida datele si orele introduse de un utilizator, in functie de formatul acestora. Cel mai uzual insa se folosesc cele 2 functii de aflare a timestamp-ului: mktime si strtotime. Acestea returneaza anumite valori in cazul in care data verificata nu este valida.
-------------------------

Cum afisez un mesaj de salut in functie de ora curenta (a serverului)?

= 7 && $h <= 11 ) print "Buna dimineata!"; elseif( $h > 11 && $h < 18 ) print "Buna ziua!"; elseif( $h >= 18 && $h < 22 ) print "Buna seara!"; elseif( $h >= 22 ) print "Noapte buna!"; else print "Ce? Esti treaz(a) la ora asta?"; // Buna seara! ?>
-----------------------------

Cum afisez luna curenta si toate cele 12 luni in limba romana?

Nota: aceasta secventa de cod depinde de configurarile serverului pe care este executata. Limba romana trebuie instalata pe server pentru a avea rezultatele scontate.

Rezultatul (este posibil sa nu fie in limba romana!):

Cod: Selectaţi tot

I. Introducere
II. Notiuni de baza
II.1.
Notiuni de baza
II.2.
Variabile. Constante
II.3.
Expresii. Operatori
II.4.
Siruri de caractere
II.5.
Structuri de control
II.6.
Structuri repetitive
II.7.
Exemple cu structuri repetitive
II.8.
Operatii cu vectori
II.9.
Data si timp
II.10.
Instructiuni PHP uzuale
II.11.
Functii in PHP
II.12.
Variabile predefinite
II.13.
Formulare
II.14.
GET vs. POST
II.15.
Exemple de formulare
III. Notiuni avansate
IV. Aplicatii
V. Extra
 
C O N T I N U T
Data si timp
 » Timestamp

 » Aflarea timpului

 » Formatarea datei

 » Calcule cu date

 » Validari

 » Mesaj in functie de ora curenta

 » Data in limba romana

 » Durata de executie

N A V I G A R E
Inapoi ←
Operatii cu vectori
Inainte →
Instructiuni PHP uzuale

Operatii comune cu indicatori de timp    6 ! 
Limbajul PHP ofera solutii simple (dar puternice) pentru lucrul cu data si timpul. In versiunile mai noi (dupa 5.1) sunt introduse facilitati avansate cum ar fi DST (Daylight Saving Time), Timezones, Date Intervals, s.a. Inainte de acestea insa lucrul cu timpul se realiza folosind Unix timestamp.

Conceptul de Unix timestamp desemneaza numarul de secunde scurse de la 1 ianuarie 1970 (cand se considera ca a inceput era Unix).

Unix Timestamp-ul curent: 
1733423955
Fiind vorba de un numar pozitiv ce are mereu aceeasi referinta, este usor sa se realizeze operatii cum ar fi scaderea, adunarea sau compararea a doua date reprezentate printr-un Unix timestamp.

Mai jos sunt cateva aplicatii menite sa evidentieze cat de usor se pot manipula date si ore in PHP.

comentarii 6 comentarii   Citeste-le   Adauga unul


Cum aflu o data din trecut sau viitor?    3 ! 
Sunt mai multe posibilitati. Se poate pleaca de la o data cunoscuta (pentru care avem Unix timestamp) si prin adunari/scaderi de secunde se afla data dorita (vezi aplicatia de mai jos). Sau se poate parsa o data folosind strtotime. Aceste solutii nu sunt intotdeauna aplicabile, iar in aceste cazuri se foloseste functia mktime.

Functia mktime primeste ca parametri anul, luna, ziua, ora pentru care se doreste aflarea detaliilor. Rezultatul este un timestamp ce poate fi formatat dupa cum se doreste.

Important: inainte de PHP 5.1.0, timestamp-urile negative nu erau suportate in unele sisteme (inclusiv Windows). De aceea domeniul valid al anilor era limitat intre 1970 si 2038.

comentarii 3 comentarii   Citeste-le   Adauga unul


Cum se formateaza data sau ora?    1 ! 
Formatarea datei sau a orei se poate realiza usor folosind functia date. Cu ajutorul acesteia se pot "extrage" doar acele parti din data care sunt necesare si se poate specifica formatul dorit. Spre exemplu, folosind functia date putem afisa data in format lung (de genul: "marti, 30 septembrie 2001") sau scurt (30.11.2001) sau cu aceeasi functie putem afisa ora sau oricare combinatie a celor doua.

Formatul se specifica print-un text format din caractere ce au o semnificatie anume, transmis ca parametru functiei date. Pentru detalii complete despre fiecare caracter in parte accesati http://www.php.net/manual/ro/function.date.php.

"; // afiseaza 20:39:15 echo date("Y-m-d") . "
"; // afiseaza 2024-12-05 echo date("F j, Y, g:i a") . "
"; // afiseaza December 5, 2024, 8:39 pm echo date("l") . "
"; // afiseaza Thursday # se poate specifica un al doilea parametru ce reprezinta data/ora care se formateaza echo date("d-m-Y H:i:s", $acum) . "
"; // afiseaza 05-12-2024 20:39:15 echo date("D, M d, Y", 1072915200) . "
"; // afiseaza Thu, Jan 01, 2004 # combinat cu mktime, se pot obtine informatii despre zile din trecut sau viitor # de exemplu, ce zi a fost pe 4 iulie 2000 $iulie4 = mktime( 0, 0, 0, 7, 4, 2000 ); # aflu timestamp-ul echo date( 'l', $iulie4 ); # formatez acel timestamp - extrag doar ziua // afiseaza Tuesday ?>
comentarii Un comentariu   Citeste-l   Adauga unul


Cum determin ce zi si ora va fi peste 480 ore?    5 ! 
Pentru a efectua usor operatii cu zile si ore, se va folosi formatul de data Unix (UNIX timestamp), returnat de functia time(). Practic, data este afisata ca numarul de secunde scurs de la 1 ianuarie 1970, ora 00:00. Avand aceasta noua perspectiva (de a privi datele ca un numar de secunde), operatiile cu date (de genul 'cat va fi peste 2 zile', 'ce ora a fost acum xxx minute', etc) devin extrem de simple luand forma unor simple scaderi si adunari de secunde.

comentarii 5 comentarii   Citeste-le   Adauga unul


Cum validez o data sau un timp?    7 ! 
Sunt mai multe modalitati de a valida datele si orele introduse de un utilizator, in functie de formatul acestora. Cel mai uzual insa se folosesc cele 2 functii de aflare a timestamp-ului: mktime si strtotime. Acestea returneaza anumite valori in cazul in care data verificata nu este valida.

comentarii 7 comentarii   Citeste-le   Adauga unul


Cum afisez un mesaj de salut in functie de ora curenta (a serverului)?    0 ! 
= 7 && $h <= 11 ) print "Buna dimineata!"; elseif( $h > 11 && $h < 18 ) print "Buna ziua!"; elseif( $h >= 18 && $h < 22 ) print "Buna seara!"; elseif( $h >= 22 ) print "Noapte buna!"; else print "Ce? Esti treaz(a) la ora asta?"; // Buna seara! ?>
comentarii Nici un comentariu   Adauga unul


Cum afisez luna curenta si toate cele 12 luni in limba romana?    1 ! 
Nota: aceasta secventa de cod depinde de configurarile serverului pe care este executata. Limba romana trebuie instalata pe server pentru a avea rezultatele scontate.

Rezultatul (este posibil sa nu fie in limba romana!):
January
February
March
April
May
June
July
August
September
October
November
December

Luna curenta este: December
------------------------
========================
CONTACT : diliulro@yahoo.com
========================
Închis