我正在使用以下php函数将我的标准DATETIME结果转换为facebook风格的时间,它显示了该日期的秒数,分钟数,小时数,天数等。
这是我的php函数:
<?php
function pretty_relative_time($time) {
if ($time !== intval($time)) { $time = strtotime($time); }
$d = time() - $time;
if ($time < strtotime(date('Y-m-d 00:00:00')) - 60*60*24*3) {
$format = 'F j';
if (date('Y') !== date('Y', $time)) {
$format .= ", Y";
}
return date($format, $time);
}
if ($d >= 60*60*24) {
$day = 'Yesterday';
if (date('l', time() - 60*60*24) !== date('l', $time)) { $day = date('l', $time); }
return $day . " at " . date('g:ia', $time);
}
if ($d >= 60*60*2) { return intval($d / (60*60)) . " hours ago"; }
if ($d >= 60*60) { return "about an hour ago"; }
if ($d >= 60*2) { return intval($d / 60) . " minutes ago"; }
if ($d >= 60) { return "about a minute ago"; }
if ($d >= 2) { return intval($d) . " seconds ago"; }
return "a few seconds ago";
}
?>
这就是我调用函数的地方:
echo pretty_relative_time($row1['date']);
我遇到的问题是脚本几乎可以100%工作,但是如果事情在一小时内过时,它只会在大约一小时前显示,即使我在几分钟或几秒钟内发布了一些内容。有人可以告诉我我做错了什么吗?我的日期存储为DATETIME标记
答案 0 :(得分:2)
您可以使用此功能100%正确工作。 。 。
function Myfunction ($time)
{
$time = time() - $time; // to get the time since that moment
$tokens = array (
31536000 => 'year',
2592000 => 'month',
604800 => 'week',
86400 => 'day',
3600 => 'hour',
60 => 'minute',
1 => 'second'
);
foreach ($tokens as $unit => $text) {
if ($time < $unit) continue;
$numberOfUnits = floor($time / $unit);
return $numberOfUnits.' '.$text.(($numberOfUnits>1)?'s':'');
}
}
以这种方式打电话。 。
$time = strtotime($time);
$time = Myfunction($time);