2014-12-05 33 views
0

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

我想显示帖子张贴的分钟数,或者如果它是超过24小时,多少天前它是张贴或像0天和20小时前?类似的东西

为什么minus运算符在这里工作我的代码?

我当前的代码:

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

回答

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';  
} 
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的时间戳给出日期在几秒钟所以很容易计算,如果你需要的数学运算进行这项工作。