(PHP 4, PHP 5, PHP 7)
strtotime — Translează aproape orice descriere textuală în limba engleză a datei și orei într-un timestamp Unix
$time
[, int $now
= time()
] )
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.
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.
Î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.
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()
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
|
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. |
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);
}
?>
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.