用PHP计算两次之间的差异(以小时为单位)
我有两次- 例如,当前时间为08:24,日期为2013年1月2日,格式为dd/mm/yyyy 我还有一个时间是13:46,日期是2012年12月31日。那么,我如何使用PHP计算这两次的时间差呢。(即42时63分)用PHP计算两次之间的差异(以小时为单位),php,datetime,time,date-arithmetic,Php,Datetime,Time,Date Arithmetic,我有两次- 例如,当前时间为08:24,日期为2013年1月2日,格式为dd/mm/yyyy 我还有一个时间是13:46,日期是2012年12月31日。那么,我如何使用PHP计算这两次的时间差呢。(即42时63分) 提前感谢。如果您将日期作为时间戳(如果需要,请使用),则只需将其减去,或者取绝对值,然后除以3600(一小时内的秒数)。轻松^ ^ ^将两者转换为时间戳值,然后减去以秒为单位的差值 $ts1 = strtotime(str_replace('/', '-', '02/01/2013
提前感谢。如果您将日期作为时间戳(如果需要,请使用),则只需将其减去,或者取绝对值,然后除以3600(一小时内的秒数)。轻松^ ^ ^将两者转换为时间戳值,然后减去以秒为单位的差值
$ts1 = strtotime(str_replace('/', '-', '02/01/2013 08:24'));
$ts2 = strtotime(str_replace('/', '-', '31/12/2012 13:46'));
$diff = abs($ts1 - $ts2) / 3600;
另一种方法是使用PHP的日期相关类。下面的示例用于获取对象(
$interval
)。然后,它使用间隔的属性得出间隔中的总小时数
$a = DateTime::createFromFormat('H:i d/m/Y', '08:24 02/01/2013');
$b = DateTime::createFromFormat('H:i d/m/Y', '13:46 31/12/2012');
$interval = $a->diff($b);
$hours = ($interval->days * 24) + $interval->h
+ ($interval->i / 60) + ($interval->s / 3600);
var_dump($hours); // float(42.633333333333)
我有一个简单的解决方案,试试这个-
echo getTimeDiff("10:30","11:10");
function getTimeDiff($dtime,$atime)
{
$nextDay = $dtime>$atime?1:0;
$dep = explode(':',$dtime);
$arr = explode(':',$atime);
$diff = abs(mktime($dep[0],$dep[1],0,date('n'),date('j'),date('y'))-mktime($arr[0],$arr[1],0,date('n'),date('j')+$nextDay,date('y')));
$hours = floor($diff/(60*60));
$mins = floor(($diff-($hours*60*60))/(60));
$secs = floor(($diff-(($hours*60*60)+($mins*60))));
if(strlen($hours)<2){$hours="0".$hours;}
if(strlen($mins)<2){$mins="0".$mins;}
if(strlen($secs)<2){$secs="0".$secs;}
return $hours.':'.$mins.':'.$secs;
}
echo getTimeDiff(“10:30”、“11:10”);
函数getTimeDiff($dtime,$atime)
{
$nextDay=$dtime>$atime?1:0;
$dep=分解(“:”,$dtime);
$arr=爆炸(“:”,$atime);
$diff=abs(mktime($dep[0]、$dep[1]、0、日期('n')、日期('j')、日期('y'))-mktime($arr[0]、$arr[1]、0、日期('n')、日期('j')+$nextDay、日期('y'));
$hours=楼层($diff/(60*60));
$mins=楼层($diff-($hours*60*60))/(60));
$secs=楼层($diff-($hours*60*60)+($mins*60));
if(strlen($hours)我认为下面的代码有助于了解如何使用PHP计算时差
function date_diff($date_1 , $date_2 , $format) {
$datetime1 = date_create($date_1);
$datetime2 = date_create($date_2);
$diff = date_diff($datetime1, $datetime2);
return $diff->format($format);
}
上述函数用于计算两个时间之间的差值以及日期。日期作为输出格式的参数给出
输出格式如下所示:
//“%y年%m月%d天%h小时%i分钟%s秒”=>1年3月14天11小时49分36秒
//“%y年%m月%d天”=>1年3月14天
//“%m个月%d天”=>3个月14天
//“%d天%h小时”=>14天11小时
//“%d天”=>14天
//“%h小时%i分钟%s秒”=>11小时49分36秒
//“%i分%s秒”=>49分36秒
//'%h小时=>11小时
//“%a Days只要把它放在这里,对于需要在
小时
,分钟
,和秒
中找到两个日期/时间戳之间的差异的任何人
$futureDate_raw = '12/13/2018'; // This is your finish date.
$fdate = strtotime($futureDate_raw);
$hours = (($fdate - time()) / 3600;
$mins = (($fdate - time()) % 3600) / 60;
$seconds = ((($fdate- time()) % 3600) % 60);
我发现这是找到时差的最简单的方法,它对我来说总是有效的
$timestamp1 = strtotime(date('Y-m-d H:i'));
$timestamp2 = strtotime("2020-04-05 18:00");
$diff = abs($timestamp2 - $timestamp1)/(60*60);
echo $diff;
编辑:strotime解析为m/d/y或d-m-y,因此转换为-在分析之前,它给出差异,但它不给出差异是正的还是负的。如果需要保留差异的符号,您可以删除abs()调用。
($ts1-$ts2)/3600
是的,这是我的错,我没有注意到你要找的术语是“日期算术”。