减去发布多少分钟前的时间

时间:2014-12-05 01:07:26

标签: php function time subtraction

因此,我当前的$ item ['date']函数以此格式Y-m-d H:i:s获取帖子的时间和日期。

我想显示帖子发布了多少分钟,或者是否超过24小时,它发布了多少天或者像0天和20小时前一样?类似的东西

为什么减号运算符不能在我的代码中运行?

我目前的代码:

<p><?php echo date('Y-m-d H:i:s') - $item['date'] ?> minutes ago</p>

2 个答案:

答案 0 :(得分:0)

您需要做的是先将两个日期转换为时间戳,然后从当前日期中减去原始发布日期,然后将其重新转换为所需的格式。作为一个例子见下文。

$now = time();
$datePosted = strtotime($item['date']);

$timePassed = $now - $datePosted;

$agoMinutes = $timePassed/60; //this will give you how many minutes passed
$agoHours = $agoMinutes/60; //this will give you how many hours passed
$agoDays = $agoHours/24; // this will give you how many days passed

等等......

Php的时间戳以秒为单位给出日期,因此如果您需要数学运算,则更容易计算和处理它。

答案 1 :(得分:0)

我通常使用这个功能。像time_ago('2014-12-03 16:25:26')

一样使用它
function time_ago($date){
    $retval = NULL;
    $granularity=2;
    $date = strtotime($date);
    $difference = time() - $date;
    $periods = array('decade' => 315360000,
        'year' => 31536000,
        'month' => 2628000,
        'week' => 604800, 
        'day' => 86400,
        'hour' => 3600,
        'minute' => 60,
        'second' => 1);

    foreach ($periods as $key => $value) 
    {
        if ($difference >= $value) 
        {
            $time = round($difference/$value);
            $difference %= $value;
            $retval .= ($retval ? ' ' : '').$time.' ';
            $retval .= (($time > 1) ? $key.'s' : $key);
            $granularity--;
        }
        if ($granularity == '0') { break; }
    }
    return $retval.' ago';      
}