【问题标题】:time difference between 2 values while if second value is past the current time如果第二个值超过当前时间,则两个值之间的时间差
【发布时间】:2020-09-22 06:16:13
【问题描述】:

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

我使用以下代码:

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) 或类似的东西因为 (数据库中保存的时间)过去了,它小于(当前时间)。

【问题讨论】:

标签: php


【解决方案1】:

您使用了$diff = abs(strtotime($date2) - strtotime($date1));,而abs() 代表绝对值(因为结果始终为正),使用strtotime($date2) - strtotime($date1) 应该可以代替

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 1970-01-01
    • 2021-10-09
    相关资源
    最近更新 更多