Calcola la differenza tra due date usando PHP

  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

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

  • Aggiungi giorni alla data in PHP
  • Articolo correlato - PHP DateTime

  • Ottieni l'anno corrente in PHP
  • Aggiungi giorni alla data in PHP