【发布时间】:2013-02-22 02:55:44
【问题描述】:
我有这个函数可以计算自从将一行添加到数据库中所经过的时间:
function added_on($time){
$now = time();
$time = $now - $time;
$blocks = array (
31536000 => 'year',
2592000 => 'month',
604800 => 'week',
86400 => 'day',
3600 => 'hour',
60 => 'minute',
1 => 'second'
);
foreach ($blocks as $unit => $size) {
if ($time < $unit)
continue;
$nrOfUnits = floor($time / $unit);
return $nrOfUnits.' '.$size.(($nrOfUnits>1)?'s':'');
}
}
这个问题是不准确的,即有大约 7 小时后的错误。 在当前时间调用时,它返回如下:7 小时前添加。 函数调用如下:
$posted_on = strtotime($row['created_at']);
echo 'added '.added_on($posted_on).' ago';
其中$row['created_at'] 是 MySQL 日期类型
谢谢你
【问题讨论】:
-
那么,您的问题是什么?这不准确吗?时区是否相同?
-
为什么会出现 7 小时错误?
-
你确定
$time是一个时间戳并且它们在同一个时区吗? -
$time 是一个时间戳。对于时区,似乎是一样的;如果我现在添加一行,时间戳就是我在本地机器上的时间。我正在本地机器(服务器)上测试这个