在PHP中获取两次之间的时间差[重复]
Posted
技术标签:
【中文标题】在PHP中获取两次之间的时间差[重复]【英文标题】:Getting time difference between two times in PHP [duplicate] 【发布时间】:2012-12-05 08:48:35 【问题描述】:可能重复:How to get time difference in minutes in php
我正在使用考勤表来计算迟到和非常迟到的员工。 我将登录时间存储在表中(类型:时间)。我能够从数据库中获取时间,我想在单独的列中显示时差。
即,如果员工在09:00:59
之前或之前登录,则其正确时间和时间差异应显示为空。如果他在该时间之后登录,即09:01:00
或更晚,则时差应为00:00:01
。同样,我需要计算时间差异。
一个时间是恒定的,即09:00:59
,另一个是我从数据库表中获取的。需要在两者之间获得差异。
我在 PHP 中工作。
希望我的问题很清楚。
在此先感谢您。
【问题讨论】:
***.com/questions/365191/… 在提出查询之前搜索堆栈 是的,我搜索得很好,但找不到我的要求。这就是我发布的问题。谢谢。 @VallabhPatade 。它不是重复的问题。那是另一种类型的问题 【参考方案1】:您可以使用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!';
Demo
检查已经提出的问题 - how to get time difference in minutes:
从最未来的一个中减去最过去的一个,然后除以 60。
时间是以 unix 格式完成的,所以它们只是一个很大的数字,显示 从 1970 年 1 月 1 日 00:00:00 GMT 算起的秒数
【讨论】:
谢谢你......它的工作很酷......我试过同样的事情。但我没有得到。我不知道为什么。 感谢它对我有很大帮助 无用的例子。用这个计算检查废话(使用你的代码):时间 1:14:31:34 时间 2:16:09:43 差异:02:38:09 这并非在所有情况下都有效:例如 12:15:00 和 12:15:01 致反对者,感谢反对票。我更新了我的示例代码。【参考方案2】:你也可以使用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)
【讨论】:
它工作.......【参考方案3】:<?php
$start = strtotime("12:00");
$end = // Run query to get datetime value from db
$elapsed = $end - $start;
echo date("H:i", $elapsed);
?>
【讨论】:
以上是关于在PHP中获取两次之间的时间差[重复]的主要内容,如果未能解决你的问题,请参考以下文章