Cerca

Seguici

Live da Facebook
Live da Twitter
Seguici su Telegram
Canale InsiDevCode Telegram
Google Plus

PHP – DateTime::Diff: Differenza tra due date

Nei nostri progetti potremo aver bisogno di verificare la differenza fra due date, magari verificando che l’intervallo fra le due date non sia superiore ad un certo intervallo di giorni etc etc. Possiamo ovviamente appoggiarci al Timestamp tenendo in considerazione l’esistenza degli anni bisestili nel nostro calcolo, cosa che sicuramente renderebbe il calcolo approssimativo e mai certamente corretto al millesimo di secondo.
Il PHP però ci viene in soccorso: La funzione che il manuale ci mette a disposizione per fare dei confronti fra date si chiama DateTime::Diff.

Programmazione ad oggetti:

<?php
$data1 = new DateTime('2017-04-13');
$data2 = new DateTime('2017-04-15');
$interval = $data1->diff($data2);
echo $interval->format('%R%d giorni');
?>

Procedurale

<?php
$data1 = date_create('2017-04-13');
$data2 = date_create('2017-04-15');
$interval = date_diff($data1, $data2);
echo $interval->format('%R%d giorni');
?>

Vi restituirà +2 giorni.
Abbiamo la possibilità di vedere gli anni, i mesi e i giorni di differenza che intercorrono tra le due date.

Attenzione al risultato della differenza

La funzione ci fornisce il tempo che trascorre tra le due date restituendo il risultato suddividendolo in anni, mesi, giorni etc. Cosa significa?
Vi faccio un esempio: Se i giorni di differenza tra due date sono 28, ad esempio tra il 1 di Aprile e il 29 di Aprile, la funzione ci restituirà “28 giorni”, ma se chiedessimo la differenza tra il 1 Aprile e il 2 Maggio ci risponderà 1 giorno, perché la differenza è di 1 mese e 1 giorno dovendo quindi modificare lo script così:

echo $interval->format('%m Mesi e %d Giorni');

Per ottenere la differenza totale giorni, spulciando il manuale, scopriamo che con %a otteniamo la somma di tutti i giorni che intercorrono tra le due date.

echo $interval->format('%a Giorni');

Conclusione

Abbiamo visto come attraverso questo articolo possa essere davvero veloce ottenere l’intervallo di tempo che intercorre tra due date, e voi, cosa utilizzate qualche altra funzione o algoritmo?
Aspetto una vostra opinione nei commenti!

Seguiteci anche su Facebook, Google Plus, Tumblr, Twitter e Telegram, per restare sempre in contatto con noi e con le nostre guide.

Informatico per scelta, tecnico per necessità, è un Programmatore, Web Developer e Blogger nato a Cagliari.
Nel 2006 inizia la sua lunga storia d’amore (e di odio) con il mondo Open Source e GNU/Linux. Amante della programmazione spazia dall’HTML al CSS, passando tra gli altri da Javascript a Python.

Scrive per Insidevcode con l’intenzione di far avvicinare i più curiosi al mondo della programmazione.



Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

Chiudi