0

我有例如:

$aaa = '12:00:00';
$bbb = '12:45:00';

$ccc = '12:00:00';
$ddd = '14:00:00';

$eee = '12:00:00';
$fff = '14:11:00';

$ggg = '12:00:00';
$hhh = '09:00:00';

我如何比较 $aaa 和 $bbb、$ccc 和 $ddd 等,并检查这些时间之间是否至少相差 2 小时?

$aaa 和 $bbb 应该返回 false

$ccc 和 $ddd 应该返回 true

$eee 和 $fff 应该返回 true

$ggg 和 $hhh 应该返回 false

我怎样才能做到?PHP中有什么方法可以解决这个问题吗?

4

1 回答 1

2
$aaa = explode(':', '12:00:00');
$bbb = explode(':', '12:45:00');

$aaa = mktime($aaa[0], $aaa[1], $aaa[2]);
$bbb = mktime($bbb[0], $bbb[1], $bbb[2]);

$dif = abs($bbb - $aaa); - difference in seconds, check abs function - you may not require it, then you will need to add ($dif>=0)

if ($dif <= 2*60*60) - cool, difference is 2 or less hours

注意:您可以使用 strtotime 但使用 explode 会更快

代替 mktime,您可以使用直接计算:

$aaa = intval($aaa[0], 10) * 60*60 + intval($aaa[1], 10) * 60 + intval($aaa[2], 10);
$bbb = intval($bbb[0], 10) * 60*60 + intval($bbb[1], 10) * 60 + intval($bbb[2], 10);

注意: intval 非常需要确保字符串表示正确转换为 int,并且不要尝试将 0 转换为八进制表示

于 2013-10-22T19:38:24.417 回答