首页 > 解决方案 > 如果第二个值超过当前时间,则两个值之间的时间差

问题描述

如果第二个值超过当前时间,如何获得两个值之间的时间差?

我使用下面的代码:

function time_diff($date2, $date1, $format){

$diff = abs(strtotime($date2) - strtotime($date1));

$years = floor($diff / (365*60*60*24));  

$months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));  

$days = floor(($diff - $years * 365*60*60*24 -  $months*30*60*60*24)/ (60*60*24)); 

$hours = floor(($diff - $years * 365*60*60*24  - $months*30*60*60*24 - $days*60*60*24) / (60*60));  

$minutes = floor(($diff - $years * 365*60*60*24  - $months*30*60*60*24 - $days*60*60*24  - $hours*60*60)/ 60);  

$seconds = floor(($diff - $years * 365*60*60*24  - $months*30*60*60*24 - $days*60*60*24 - $hours*60*60 - $minutes*60)); 


if ($format == 'year'){
 $i = $years;
}elseif ($format == 'month'){
 $i = $months;
}elseif ($format == 'day'){
 $i = $days;
}elseif ($format == 'hour'){
 $i = $hours;
}elseif ($format == 'minutes'){
 $i = $minutes;
}elseif ($format == 'second'){
 $i = $seconds;
}

return $i;

}

我想获得(数据库中保存的时间)(当前时间)之间的时间差。

一切都很好,但是当(在数据库中保存的时间)过去并且它小于(当前时间)时,此代码返回值但没有负号。

我的意思是,如果时差是2 天,它会返回2而它应该返回(-2)或类似 cuz (数据库中保存的时间)过去并且它小于(当前时间)的东西。

标签: php

解决方案


你使用$diff = abs(strtotime($date2) - strtotime($date1));, whileabs()代表绝对(因为结果总是积极的)使用strtotime($date2) - strtotime($date1)应该代替


推荐阅读