- 得到时间戳从SQL,
- 使用简单的减法来获得秒
- 你可以实现一个简单的欧尔数的差值(n)函数,而不是欧尔N,让文本延时,如下所示:
function niceTime($difference) {
if ($difference > 86400)
if ($difference > 2592000)
if ($difference > 30758400) {
$time = round($difference/30758400);
$unit = 'year';
} else {
$time = round($difference/2592000);
$unit = 'month';
}
else
if ($difference > 604800) {
$time = round($difference/604800);
$unit = 'week';
} else {
$time = round($difference/86400);
$unit = 'day';
}
else
if ($difference > 900)
if ($difference > 3600) {
$time = round($difference/3600);
$unit = 'hour';
} else {
$time = round($difference/900);
$unit = 'quarter';
}
else
if ($difference > 60) {
$time = round($difference/60);
$unit = 'minute';
} else {
$time = round($difference);
$unit = 'second';
}
return $time . ' ' . $unit . ($time != 1 ? 's' : '') . ' ago';
}
这里的想法是,你不应该通过八步迭代,找出一个给定的差异的确是最坏的情况下(超过一年)。相反,你每次都会将选项分成一半,而且你会在三次比较中以“正确”的时间进行比赛。
在你有100.000评论认为都是两岁页面最坏的情况下,这将减少800.000比较的次数,以300.000,这将是noticable。 ;-)
我同意这应该在客户端完成; – Qchmqs
如果您在客户端执行此操作,则必须发送服务器的当前时间戳以用作参考。你不能认为人们已经正确设置了他们的时钟。 –
@SalmanA:时间戳应该在某个普通时区,例如GMT/UTC。 – ZeissS