在PHP中获取两个时间之间的时间差

33

可能是重复问题:
如何在 PHP 中计算分钟数的时间差

我正在处理一个考勤表格来计算迟到和非常迟到的员工。 我在表格中存储登录时间(类型:时间)。我能够从数据库中获取时间,并希望在单独的列中显示时间差。

例如,如果员工在09:00:59之前登录,则是准确的时间,时间差应显示为null。如果他在之后登录,即09:01:00或更晚,则时间差应为00:00:01。同样地,我需要计算出时间差。

一次时间是恒定的,即09:00:59,另一个时间我从数据库表中获取。需要获取两者之间的差异。我是使用PHP开发的。

希望我的问题清楚明了。

提前感谢您。


1
https://dev59.com/ynRC5IYBdhLWcg3wP-dh - Vallabh Patade
1
在提问之前,请搜索Stack Overflow。 - rOcKiNg RhO
1
是的,我搜索了很多,但都没有找到符合我的要求的。所以我才发布了问题。谢谢。 - Vignesh Gopalakrishnan
@VallabhPatade。这不是重复的问题。那是另一种类型的问题。 - Sumit Kumar Gupta
3个回答

34
你可以使用strtotime()进行时间计算。这里有一个例子:
$checkTime = strtotime('09:00:59');
echo 'Check Time : '.date('H:i:s', $checkTime);
echo '<hr>';

$loginTime = strtotime('09:01:00');
$diff = $checkTime - $loginTime;
echo 'Login Time : '.date('H:i:s', $loginTime).'<br>';
echo ($diff < 0)? 'Late!' : 'Right time!'; echo '<br>';
echo 'Time diff in sec: '.abs($diff);

echo '<hr>';

$loginTime = strtotime('09:00:59');
$diff = $checkTime - $loginTime;
echo 'Login Time : '.date('H:i:s', $loginTime).'<br>';
echo ($diff < 0)? 'Late!' : 'Right time!';

echo '<hr>';

$loginTime = strtotime('09:00:00');
$diff = $checkTime - $loginTime;
echo 'Login Time : '.date('H:i:s', $loginTime).'<br>';
echo ($diff < 0)? 'Late!' : 'Right time!';

检查已经提出的问题 - 如何获取分钟的时间差
从最早的时间减去最晚的时间,然后除以60。
时间以Unix格式表示,因此它们只是一个大数字,表示从1970年1月1日00:00:00 GMT开始的秒数。

谢谢,它很酷。我也尝试了同样的事情,但是我没有成功。我不知道为什么。 - Vignesh Gopalakrishnan
2
无用的例子。使用您的代码检查无意义的计算:时间1:14:31:34 时间2:16:09:43 差异:02:38:09 - Artur Filipiak
4
并非所有情况下都能正常运作:例如12:15:00和12:15:01。 - viMaL
1
给那些给我点踩的人,谢谢你们。我已经更新了我的示例代码。 - Sithu
你是救命恩人。谢谢 @Sithu - Fata1Err0r

26

你也可以使用DateTime类:

$time1 = new DateTime('09:00:59');
$time2 = new DateTime('09:01:00');
$interval = $time1->diff($time2);
echo $interval->format('%s second(s)');

结果:

1 second(s)

它有效...... - vishalknishad

-3
<?php
$start = strtotime("12:00");
$end = // Run query to get datetime value from db
$elapsed = $end - $start;
echo date("H:i", $elapsed);
?>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接