Ce face date_diff / DateInterval
date_diff($a, $b) este forma de funcție pentru $a->diff($b). Returnează un obiect DateInterval, care descrie distanța dintre cele două date.
Proprietăți utile ale DateInterval: y (ani), m (luni), d (zile), h, i, s (ore, minute, secunde), days (numărul total de zile) și invert (1 dacă a doua dată este înaintea primei).
Metoda ->format() folosește marcaje cu %: %y ani, %m luni, %d zile, %a total zile, %h ore, %R semnul (+ sau -).
Parametri
| Parametru | Descriere |
|---|---|
$baseObject |
Data de pornire. |
$targetObject |
Data cu care se compară. |
$absolute |
Opțional. true pentru ca diferența să fie mereu pozitivă. |
Ce returnează
Un obiect DateInterval.
Exemple
Exemplul 1: Vârsta unei persoane
<?php
$nastere = date_create("1998-05-12");
$azi = date_create("2026-10-19");
$varsta = date_diff($nastere, $azi);
echo "Ana are {$varsta->y} de ani.";
Rezultat
Ana are 28 de ani.
Exemplul 2: Total zile și diferența pe bucăți
%d este doar partea de zile rămasă după luni. Pentru numărul total de zile folosește %a sau proprietatea days.
<?php
$inscriere = date_create("2026-01-01");
$azi = date_create("2026-10-19");
$d = $inscriere->diff($azi);
echo $d->format("%m luni și %d zile") . "\n";
echo $d->format("%a zile în total") . "\n";
echo $d->days;
Rezultat
9 luni și 18 zile
291 zile în total
291
Exemplul 3: Date din trecut: semnul diferenței
<?php
$termen = date_create("2026-10-15");
$azi = date_create("2026-10-19");
$d = date_diff($azi, $termen);
echo $d->format("%R%a zile") . "\n";
echo $d->invert ? "Termenul a trecut." : "Mai este timp.";
Rezultat
-4 zile
Termenul a trecut.
Greșeli frecvente
- Folosești
%dpentru numărul total de zile.%darată doar zilele rămase după ani și luni. Folosește%a. - Calculezi zilele împărțind diferența de timestamp-uri la 86400. În zilele de trecere la ora de vară sau de iarnă, o zi are 23 sau 25 de ore, iar rezultatul poate ieși greșit.
date_diffține cont de asta.
Comenzi înrudite
date_create / DateTime: Creează un obiect DateTime dintr-un text. Obiectele DateTime și DateTimeImmutable sunt modul modern de a lucra cu date în PHP.strtotime: Transformă o dată scrisă ca text (inclusiv expresii ca „+1 week”) în timestamp.mktime: Construiește timestamp-ul Unix pentru o dată și o oră anume, din ore, minute, secunde, lună, zi și an.