如何基于php语言计算两个时间之间相差多久呢?几天?几小时?几分钟?几秒?
从网上百度了一下,得到如下代码,不过我根据自己的需求稍稍改了一下。
/**
* 获取两个时间之间的差值(差值在60秒之内表示为:刚刚;差值不足1小时表示为:xx分钟前;差值不足1天表示为:xx小时前;同年只显示年月;非同年显示年月日)*/
function recent($begin_time,$end_time) {
if($begin_time < $end_time){
$starttime = $begin_time;
$endtime = $end_time;
} else {
$starttime = $end_time;
$endtime = $begin_time;
}
/* 时间戳只差 */
$timediff = $endtime - $starttime;
/* 一天86400秒(24*60*60),做除法后取整得到天数 */
$days = intval($timediff / 86400);
/* %为取余,$remain 为取余的结果,然后进一步计算小时(除60*60,取整)*/
$remain = $timediff % 86400;$hours = intval($remain / 3600);
/* 计算分钟,秒数 */
$remain = $remain % 3600;
$mins = intval($remain / 60);
$secs = $remain % 60;
/* 划分时间,指定提示 */
if (!$days) {
if (!$hours) {
if (!$mins) {
print "刚刚";
} else {
print $mins . "分钟前";
}
} else {
print $hours . "小时前";
}
} else {
if ($days <= 3) {
print $days . "天前";
} else{
date_default_timezone_set('PRC'); // 此行代码用于解决时间不准的问题
$this_year = date("Y");
$start_year = date("Y", $starttime);
if ($this_year == $start_year) {
print date("m-d", $starttime);
} else {
print date("Y-m-d", $starttime);
}}
}
};
date_default_timezone_set('PRC'); // 此行代码解决时间date("Y-m-d H:i:s")显示的时间不准的问题
$now = strtotime(date("Y-m-d H:i:s"));
$begin = strtotime('2017-10-10 16:20:04');
recent($begin, $now);
结束啦!