php - 如果第二个值超过当前时间,则两个值之间的时间差
问题描述
如果第二个值超过当前时间,如何获得两个值之间的时间差?
我使用下面的代码:
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 (数据库中保存的时间)过去并且它小于(当前时间)的东西。
解决方案
你使用$diff = abs(strtotime($date2) - strtotime($date1));
, whileabs()
代表绝对(因为结果总是积极的)使用strtotime($date2) - strtotime($date1)
应该代替
推荐阅读
- php - 警告:file_get_contents(https://api.telegram.org/bottoken/sendMessage):无法打开流:网络在第 8 行的 ..../ma.php 中无法访问
- node.js - 如何用猫鼬填充嵌套属性
- php - 如何在 Laravel Vapor 中添加 php-gd 扩展?
- pine-script - 如何将此 pine 代码脚本转换为版本 4?
- sql - SQL如何根据一个语句中的两个where条件获取两列
- javascript - 在反应中改变嵌套状态
- algorithm - (Scala) Leetcode 200. 超出内存限制
- nginx - Docusign Connect / webhook 错误:底层连接已关闭:发送时发生意外错误
- c# - 用于子串匹配的 Levenshtein 算法的 C# 实现
- python - 'function' 对象没有属性 'display_formatter'