因此,我当前的$ 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>
答案 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';
}