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

mik*_*ike 29 php datetime date

我有两个约会,形成像"Ymd H:i:s".我需要比较这两个日期并找出小时差异.

Ail*_*lyn 61

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

$hourdiff = round((strtotime($time1) - strtotime($time2))/3600, 1);
Run Code Online (Sandbox Code Playgroud)

除以3600因为一小时内有3600秒并且使用round()以避免有很多小数位.

  • 使用`strtotime()`**不是**管理日期的最佳方式.考虑使用`\ DateTime :: createFromFormat($ date,'Ymd H:i:s') - > diff($ dto2)`或类似的功能来处理日期(_ +我们知道我们期望解析的格式).它差不多2015年外,让事情优雅! (5认同)

Sou*_*ose 16

你也可以使用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;
Run Code Online (Sandbox Code Playgroud)


Phi*_*ber 7

$seconds = strtotime($date2) - strtotime($date1);
$hours = $seconds / 60 / 60;
Run Code Online (Sandbox Code Playgroud)


Pau*_*een 5

作为对已接受答案的补充,我想提醒一下,这\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
Run Code Online (Sandbox Code Playgroud)

\DateInterval 文档。