如何在PHP中找到两个日期之间的小时差异?

时间:2010-09-21 18:54:09

标签: php datetime date

我有两个约会,形成像“Y-m-d H:i:s”。我需要比较这两个日期并找出小时差异。

10 个答案:

答案 0 :(得分:58)

您可以将它们转换为时间戳并从那里开始:

$hourdiff = round((strtotime($time1) - strtotime($time2))/3600, 1);

除以3600,因为一小时内有3600秒并使用round()来避免产生大量小数位。

答案 1 :(得分:15)

您也可以使用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;

答案 2 :(得分:4)

$seconds = strtotime($date2) - strtotime($date1);
$hours = $seconds / 60 / 60;

答案 3 :(得分:4)

作为已接受答案的补充,我想提醒\DateTime::diff可用!

$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文档。

答案 4 :(得分:2)

$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;

答案 5 :(得分:0)

您可以使用strtotime()来解析字符串并区分它们。


资源:

答案 6 :(得分:0)

问题是使用这些值的结果是167,它应该是168:

$date1 = "2014-03-07 05:49:23";
$date2 = "2014-03-14 05:49:23";
$seconds = strtotime($date2) - strtotime($date1);
$hours = $seconds / 60 /  60;

答案 7 :(得分:0)

你可以试试这个:

$dayinpass = "2016-09-23 20:09:12";
$today = time();
$dayinpass= strtotime($dayinpass);
echo round(abs($today-$dayinpass)/60/60);

答案 8 :(得分:0)

这是因为节省了一天的时间。 夏令时(美国)2014年凌晨2:00开始 3月9日星期日。

您在$ date1 =“2014-03-07 05:49:23”期间失去一小时 $ date2 =“2014-03-14 05:49:23”;

答案 9 :(得分:0)

您可以尝试以下方法:

    $time1 = new DateTime('06:56:58');
    $time2 = new DateTime('15:35:00');
    $time_diff = $time1->diff($time2);
    echo $time_diff->h.' hours';
    echo $time_diff->i.' minutes';
    echo $time_diff->s.' seconds';

输出:

8小时38分2秒