J'ai deux dates, formatées comme "Y-m-d H: i: s". Je dois comparer ces deux dates et calculer la différence d'heures.
Vous pouvez les convertir en horodatages et partir de là:
$hourdiff = round((strtotime($time1) - strtotime($time2))/3600, 1);
Division par 3600 car il y a 3600 secondes en une heure et utilisez round()
pour éviter les décimales.
Vous pouvez également utiliser l’interface DateTime -
$d1= new DateTime("06-08-2015 01:33:26pm");
$d2= new DateTime("06-07-2015 10:33:26am");
$interval= $d1->diff($d2);
echo ($interval->days * 24) + $interval->h;
$seconds = strtotime($date2) - strtotime($date1);
$hours = $seconds / 60 / 60;
En complément de la réponse acceptée, j'aimerais rappeler que \DateTime::diff
est disponible!
$f = 'Y-m-d H:i:s';
$d1 = \DateTime::createFromFormat($date1, $f);
$d2 = \DateTime::createFromFormat($date2, $f);
/**
* @var \DateInterval $diff
*/
$diff = $d2->diff($d1);
$hours = $diff->h + ($diff->days * 24); // + ($diff->m > 30 ? 1 : 0) to be more precise
\DateInterval
documentation.
$date1 = date_create('2016-12-12 09:00:00');
$date2 = date_create('2016-12-12 11:00:00');
$diff = date_diff($date1,$date2);
$hour = $diff->h;
Vous pouvez utiliser strtotime()
pour analyser vos chaînes et faire la différence entre les deux.
Ressources :
C’est en raison de l’économie de l’heure du jour . L’heure d’été (États-Unis) a débuté à 02h00 le dimanche 9 mars.
Vous perdez une heure au cours de la période allant de $ date1 = "2014-03-07 05:49:23" à $ Date2 = "2014-03-14 05:49:23";
Vous pouvez essayer ceci:
$dayinpass = "2016-09-23 20:09:12";
$today = time();
$dayinpass= strtotime($dayinpass);
echo round(abs($today-$dayinpass)/60/60);
Le problème est qu'en utilisant ces valeurs, le résultat est 167 et il devrait être 168:
$date1 = "2014-03-07 05:49:23";
$date2 = "2014-03-14 05:49:23";
$seconds = strtotime($date2) - strtotime($date1);
$hours = $seconds / 60 / 60;