获得时间间隔

时间:2010-08-16 00:32:48

标签: php time

我有两个时间戳输入,一个是当前时间,另一个是未来

未来时间:2010-8-17 23:00 现在时间:2010-8-15 11:00

我想设置通知系统,它会显示上述日期之间的时间间隔。即。

15分钟前 30分钟前 1小时前 2小时前 3小时前 .... .... .... 前一天

我不确定如何在php中完成此任务,想知道这里是否有任何人可以建议我如何实现此任务

4 个答案:

答案 0 :(得分:3)

如何使用DateTime类。

<?php
$datetime1 = new DateTime('2010-8-15 11:00');
$datetime2 = new DateTime('2010-8-17 23:00');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%d days, %H hours');
?>

<强>输出:

  

+2天,12小时

答案 1 :(得分:1)

$t1 = getdate($current_date);
$t2 = getdate($future_date);
return $t2[0]-$t1[0];

这将为您提供两个日期之间的差异,以秒为单位。

答案 2 :(得分:0)

获取两个日期之间的差异,然后使用date_parse

// $difference = difference in times
print_r(date_parse($difference));

这会产生类似

的内容
  

阵列(       [year] =&gt; 2006年       [月] =&gt; 12       [day] =&gt; 12       [小时] =&gt; 10       [分钟] =&gt; 0       [second] =&gt; 0       [fraction] =&gt; 0.5       [warning_count] =&gt; 0       [警告] =&gt;阵列()       [error_count] =&gt; 0       [errors] =&gt;阵列()       [is_localtime] =&gt; )

有关详细信息,请参阅http://php.net/manual/en/function.date-parse.php

答案 3 :(得分:0)

这就是我在需要完全相同的事情时所做的。

您可以通过获取一周,一个月或一年中的秒数来轻松扩展它。

function getTimeInterval($ts1, $ts2)
{
    $interval = (int)$ts2 - (int)$ts1;
    if ( $interval < 0 ) {
        return false;
    } else {
        $days = floor($interval / 86400); // seconds in one day
        $interval = $interval % 86400;
        $hours = floor($interval / 3600);
        $interval = $interval % 3600;
        $minutes = floor($interval / 60);
        $interval = $interval % 60;
        $seconds = $interval;
    }
    return array(
        'days' => $days,
        'hours' => $hours,
        'minutes' => $minutes,
        'seconds' => $seconds
    );
}