Calcola la differenza tra due date usando PHP
-
Usa
strtotime()
per calcolare la differenza tra due date per la versione PHP inferiore alla 5.3 -
Usa gli oggetti
DateTime()
eDateInterval()
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
- Converti DateTime in String in PHP
- Converti la stringa in data e data-ora in PHP
- Converti un formato di data in un altro in PHP
- Ottieni la data e l'ora correnti in PHP