Calcola la differenza tra due date usando PHP

Ralfh Bryan Perez 30 gennaio 2023
  1. Usa strtotime() per calcolare la differenza tra due date per la versione PHP inferiore alla 5.3
  2. Usa gli oggetti DateTime() e DateInterval() per PHP 5.3 e versioni successive
Calcola la differenza tra due date usando PHP

Esistono diversi modi per calcolare la differenza tra due date utilizzando PHP. Questo articolo ti mostrerà come utilizzare la versione PHP <5.3 e il metodo più recente e più affidabile per la versione più recente (> 5.3) per calcolare la differenza di date.

Usa strtotime() per calcolare la differenza tra due date per la versione PHP inferiore alla 5.3

strtotime() converte due date nell’ora UNIX e calcola il numero di secondi da esse. Da questo, è più facile calcolare diversi metodi usando i secondi. La funzione accetta un parametro stringa in inglese che mostra la descrizione di data-ora.

Esempio:

$firstDate = "2019-01-01";
$secondDate = "2020-03-04";

$dateDifference = abs(strtotime($secondDate) - strtotime($firstDate));

$years  = floor($dateDifference / (365 * 60 * 60 * 24));
$months = floor(($dateDifference - $years * 365 * 60 * 60 * 24) / (30 * 60 * 60 * 24));
$days   = floor(($dateDifference - $years * 365 * 60 * 60 * 24 - $months * 30 * 60 * 60 *24) / (60 * 60 * 24));

echo $years." year,  ".$months." months and ".$days." days";

//output: 1 year, 2 months and 3 days

L’esempio sopra ottiene la differenza di due date utilizzando diverse funzioni come abs(), floor() e principalmente strtotime().

Lo strtotime() ottiene il valore UNIX dei secondi delle date e usa abs() per avere il valore assoluto della prima data.

La funzione floor() è usata per arrotondare i secondi al numero intero più vicino.

Per ottenere l’anno, moltiplicare 365 giorni per 60 minuti, 60 secondi e 24 ore, quindi dividerlo per la differenza.

Per ottenere i mesi, moltiplicare 30 giorni per 60 minuti, 60 secondi e 24 ore e dividerlo per la differenza della differenza di data moltiplicata per l’anno e 365 giorni, 60 minuti, 60 secondi e 24 ore.

Quindi per ottenere la differenza di giorno, moltiplicare 60 minuti, 60 secondi e 24 ore quindi dividerla per la differenza della differenza di data, prodotto di anni, 365 giorni, 60 minuti, 60 secondi e 24 ore e i prodotti di mesi, 30 giorni, 60 minuti e 60 secondi e 24 ore.

Infine, metti tutto insieme in una variabile per stampare la differenza finale.

Usa gli oggetti DateTime() e DateInterval() per PHP 5.3 e versioni successive

Questo metodo è uno stile orientato agli oggetti per ottenere la differenza tra due date, questo è anche il più semplice poiché non richiede il calcolo manuale delle date ed è consigliato poiché proviene dalla versione più recente di PHP.

Esempio:

$firstDate  = new DateTime("2019-01-01");
$secondDate = new DateTime("2020-03-04");
$intvl = $firstDate->diff($secondDate);

echo $intvl->y . " year, " . $intvl->m." months and ".$intvl->d." day"; 
echo "\n";
// Total amount of days
echo $intvl->days . " days ";

//output: 1 year, 2 months and 1 day
//        428 days

Nell’esempio sopra, a differenza dell’uso di strtotime() e di altre funzioni e calcoli, gli oggetti DateTime() e DateInterval() lo hanno reso più semplice.

Per prima cosa, dichiara le date usando new DateTime(). Quindi, ottieni il valore intero della differenza usando l’oggetto DateInterval() diff() sulla prima data e passa la seconda data come parametro.

Infine, per ottenere year basta utilizzare l’oggetto y. Usa m per ottenere i mesi e d per il giorno.

Articolo correlato - PHP Date

Articolo correlato - PHP DateTime