• 0742030267
  • horea1981@yahoo.com

Data si Timpul in PHP

PHP are mai multe functii pentru lucru cu Data zilei si Timpul /Ora. Cele mai utilizate sunt acestea:

  • date() – transforma Timestamp (denumit si timpul Unix, numarul de secunde de la 1 Ianuarie 1970) intr-un format de data citet /textual.
  • time() – Returneaza timpul Unix /Timestamp curent (numarul de secunde de la 1 Ianuarie 1970 pana in prezent).
  • microtime() Returneaza timpul Unix /timestamp curent in microsecunde.
  • getdate() – Returneaza un array asociativ ce contine informatii despre data si timp.

– Aceste functii permit sa preiei data si timpul de la server in script-ul PHP; ele depind de setarile locale ale serverului.

PHP date()

Functia PHP date() e utilizata pt. formatarea Timestamp in data /timp.
  – Sintaxa: date(„format”, timestamp) – format   – Un sir format din caractere ce reprezinta data returnata. Ex.:   „D, d M Y H:i:s” rezulta => „Mon, 15 Aug 2012 15:42:01 +0000
– timestamp   – numarul de secunde de la 1-01-1970 pana la o anumita data. Este optional, daca nu e specificat se foloseste Timestamp-ul curent.
Aceasta functie returneaza un sir cu formatul datei, sau False in caz de eroare.

• O lista cu mai multe functii si exemple de lucru cu data si timpul la pagina: Functii pentru Data si Timp.

– Exemplu, preia data curenta, Zi-Luna-An: $today = date(‘d-m-Y’);
echo $today; In mod standard, functia date() foloseste timpul zonal al serverului. Ca sa setati un alt timp zonal, utilizati functia date_default_timezone_set(‘timezone_identifier’), adaugata inainte de alte functii pt data si timp.
Parametrul „timezone_identifier” e un sir cu identificatorul zonei de timp (ex.: ‘America/New_York‘ sau ‘Europe/Bucharest‘). Lista completa de timpuri zonale pt PHP e la pagina: Lista zone de timp pt PHP.
  – Exemplu:

<?php
date_default_timezone_set('Europe/Bucharest');         // seteaza timpul zonal pt Romania (Bucuresti)

// returneaza ziua curenta din saptamana
echo date('l');

// returneaza data zilei curente (zi-luna-an)
echo '<br />'. date('j-F-Y');

// returneaza Ora:minute:secunde a timpului curent
echo '<br />'. date('H:i:s');
?>

Rezultat: Sunday
28-October-2012
07:55:18
In acest exemplu nu e specificat un timestamp, astfel, functia date() lucreaza cu timpul actual, zona Romania /Bucuresti.

Ca sa obtineti timpul Unix /Timestamp-ul curent (numarul de secunde), se utilizeaza functia time() (ex.:   $ts = time(); ).

Alte exemple cu functii pentru Data si Timp

Ca sa lucrati cu Timestamp-ul unei anumite date specifice, utilizati functia mktime().
  – Sintaxa: mktime(ore, minute, secunde, luna, zi, an) Returneaza timpul Unix corespunzator argumentului.

Se poate utiliza si functia strtotime(). Returneaza timpul Unix a sirului din parametru cu data textuala in limba engleza.
  – Sintaxa: strtotime(„timpul”) – Parametrul „timpul” e un sir /text cu data in limba engleza (ex.:   „now„, „+1 Day„, „15 October 2012„, „next Sunday„, etc.).
O lista cu formate valabile e la pagina Formate Data si Timp.

  Exemplu cu mktime() ai strtotime():

<?php
// preia Timestamp-ul datei October 15, 1976, 20:38:00 (cu mktime)
// returneaza Timestamp-ul si ziua din saptamana a acestei date
$stamp = mktime(20, 38, 0, 10, 15, 1976);
echo 'Timestamp: '. $stamp;
echo '<br /> October 15, 1976 este '. date('l', $stamp);

// Exemplu cu strtotime()
echo '<br /><br />Exemplu cu strtotime():<br />';

echo '<br /> 15 October 1976, 20:38:00 - '. strtotime('15 October 1976, 20:38:00');

// Alte exemple
echo '<br /> 07 July 1996 - '. strtotime('07 July 1996');
echo '<br /> +3 days - '. strtotime('+3 days');
echo '<br /> +1 one week - '. strtotime('+1 week');
echo '<br /> +1 week 2 days 3 hours 30 seconds - '. strtotime('+1 week 2 days 3 hours 30 seconds');
echo '<br /> next Sunday - '. strtotime('next Sunday');
?>

Acest cod va afisa: Timestamp: 214252680
October 15, 1976 este Friday

Exemplu cu strtotime():

15 October 1976, 20:38:00 – 214252680
07 July 1996 – 836686800
+3 days – 1300950386
+1 one week – 1301292386
+1 week 2 days 3 hours 30 seconds – 1301476016
next Sunday – 1301176800

Ziua 0 dintr-o luna reprezinta ultima zi din luna precedenta.
De exemplu, ziua 0 din Martie 2012 este „29”, ultima zi din Februarie 2012:
                echo date(‘d’, mktime(0, 0, 0, 03, 0, 2012));             // 29
• O alta functie utila pt data si timp e getdate()
  – Sintaxa: getdate(timestamp) – timestamp   – E optional, un numar intreg cu timpul Unix. Daca nu e specificat, foloseste timestamp-ul curent.
getdate() returneaza un array asociativ cu informatii despre data si timpul din „timestamp”, sau cel curent daca nu e specificat.
  – Exemplu:

<?php
$now = getdate();
echo '<pre>';
var_export($now);
echo '</pre>';
?>

Acest cod va afisa un array similar cu acesta:

array (
  'seconds' => 48,
  'minutes' => 30,
  'hours' => 9,
  'mday' => 21,
  'wday' => 1,
  'mon' => 3,
  'year' => 2011,
  'yday' => 79,
  'weekday' => 'Monday',
  'month' => 'March',
  0 => 1300692648,
)

– Exemplu cu microtime() (returneaza timpul Unix /timestamp curent in microsecunde). E util, de exemplu in a afla timpul de executie a unui cod PHP.
  – Cod:

<?php
$load_time = -microtime(true);

// instructiuni php

$load_time += microtime(true);

echo $load_time. ' seconds';
?>