strtotime

(PHP 4, PHP 5, PHP 7)

strtotimeTranslează aproape orice descriere textuală în limba engleză a datei și orei într-un timestamp Unix

Descrierea

strtotime ( string $time [, int $now = time() ] ) : int

Funcția așteaptă un șir de caractere conținând un format de dată engleză și încearcă să transforme acest format într-un timestamp Unix (numărul de secunde de la 1 Ianuarie 1970 00:00:00 UTC), în raport cu timestamp-ul dat în parametrul now, sau cu ora curentă dacă parametrul now nu este furnizat.

Fiecare parametru al acestei funcții utilizează fusul orar implicit, afară de cazul când fusul orar este specificat în acel parametru. Fiți atenți să nu utilizați diferite fusuri orare în fiecare parametru, afară de cazul când anume așa se intenționează. Vedeți date_default_timezone_get() pentru diferite metode de a defini fusul orar implicit.

Parametri

time

Un șir dată/oră. Formatele valide sunt explicate în Formatele datelor și orelor.

now

Timestamp-ul care este utilizat ca bază pentru calcularea datelor relative.

Valorile întoarse

Întoarce un timestamp în caz de succes, FALSE în caz contrar. Înainte de PHP 5.1.0, această funcție întorcea -1 în caz de eșec.

Erori/Excepții

Fiecare apel al unei funcții de dată/oră va genera o E_NOTICE dacă zona orară nu este validă și/sau un mesaj E_STRICT sau E_WARNING dacă se utilizează setările sistemului sau variabila de mediu TZ. Vedeți de asemenea date_default_timezone_set()

Istoricul schimbărilor

Versiune Descriere
5.3.0 Anterior versiunii PHP 5.3.0, formatele de timp relative transmise prin argumentul time al funcției strtotime(), cum ar fi this week, previous week, last week și next week erau interpretate ca perioadă de 7 zile relativ cu data/ora curentă, și nu ca o perioadă de o săptămână de la Monday până la Sunday.
5.3.0 Anterior versiunii PHP 5.3.0, 24:00 nu era un format valid și strtotime() întorcea FALSE.
5.2.7 În PHP 5 anterior versiunii 5.2.7, cererea de a obține o anumită zi a săptămânii într-o lună, unde această zi este prima zi a lunii, adăuga în mod incorect o săptămână la valoarea întoarsă. Aceasta a fost corectat în versiunea 5.2.7 și cele ulterioare.
5.1.0 Acum întoarce FALSE în caz de eșec, în loc de -1.
5.1.0

Acum generează erori ale zonei orare de tip E_STRICT și E_NOTICE.

5.0.2 În PHP 5 până la versiunea 5.0.2, "now" și alte momente de timp relative erau calculate greșit relativ la miezul nopții de astăzi. Aceasta diferă de alte versiuni, unde el este calculat corect relativ la ora curentă.
5.0.0 Microsecundele au început să fie permise, dar sunt ignorate.

Exemple

Example #1 Exemplu strtotime()

<?php
echo strtotime("now"), "\n";
echo 
strtotime("10 September 2000"), "\n";
echo 
strtotime("+1 day"), "\n";
echo 
strtotime("+1 week"), "\n";
echo 
strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo 
strtotime("next Thursday"), "\n";
echo 
strtotime("last Monday"), "\n";
?>

Example #2 Verificarea eșecului

<?php
$str 
'Nu e bine';

// înainte de PHP 5.1.0 ar fi trebuit de comparat cu -1, în loc de false
if (($timestamp strtotime($str)) === false) {
    echo 
"String-ul ($str) nu este corect";
} else {
    echo 
"$str == " date('l dS \o\f F Y h:i:s A'$timestamp);
}
?>

Note

Notă:

Dacă anul este specificat cu două cifre, valorile între 00-69 sunt interpretate ca 2000-2069, iar valorile între 70-99 ca 1970-1999. Vedeți notele de mai jos pentru posibilele diferențe pe sistemele pe 32 de biți (datele posibile pot să se încheie cu 2038-01-19 03:14:07)

Notă:

Domeniul valid al unui timestamp este de obicei de la Fri, 13 Dec 1901 20:45:54 UTC până la Tue, 19 Jan 2038 03:14:07 UTC. (Acestea sunt datele ce corespund valorilor minimă și maximă pentru un întreg pe 32 biți cu semn.)

Anterior versiunii PHP 5.1.0, nu toate platformele susțin timestamp-uri negative, de aceea domeniul datelor poate fi limitat la valorile de după Epoca Unix. Aceasta înseamnă că de ex. datele de până la 1 Ianuarie 1970 nu vor fi valide în Windows, unele distributive Linux, și alte câteva sisteme de operare.

Pentru versiunile PHP pe 64 de biți domeniul valid a unui timestamp este practic infinit, deoarece pe 64 de biți se pot reprezenta aproximativ 293 milioane de ani în ambele direcții.

Notă:

Datele în formatul m/d/y sau d-m-y sunt disambiguate analizând separatorul dintre deferite componente: dacă separatorul este slash (/), atunci este utilizat formatul American m/d/y; iar dacă separatorul este liniuța (-) sau punctul (.), atunci este utilizat formatul European d-m-y. Însă dacă anul e furnizat în format cu două cifre și separatorul este liniuța (-), atunci șirul cu data va fi interpretat ca y-m-d.

Pentru a evita o potențială ambiguitate, cel mai bine este de a utiliza date în format ISO 8601 (YYYY-MM-DD) sau DateTime::createFromFormat() atunci când este posibil.

Notă:

Utilizarea acestei funcții pentru operații matematice nu este recomandabilă. Este mai bine de a utiliza DateTime::add() și DateTime::sub() în PHP 5.3 și ulterior, sau DateTime::modify() în PHP 5.2.

A se vedea și