我有这个函数来计算自将行添加到数据库以来经过的时间:
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日期类型
谢谢
答案 0 :(得分:2)
select time_to_sec(timediff(now(), created_at)) as seconds_ago from `table_name`
为了帮助您调试更多,您可以使用以下(docs)检查和设置mysql服务器的时区:
-- Check the global and session time_zone settings
select @@global.time_zone, @@session.time_zone;
-- Set the time zone to GMT -5 hours (EST):
set SESSION time_zone = '-5:00';