PHP,计算添加后的时间

PHP,计算添加后的时间,php,mysql,database,Php,Mysql,Database,我有一个函数,用于计算将行添加到数据库后经过的时间: function added_on($time){ $now = time(); $time = $now - $time; $blocks = array ( 31536000 => 'year', 2592000 => 'month', 604800 => 'week', 86400 => 'day', 36

我有一个函数,用于计算将行添加到数据库后经过的时间:

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':'');
    }

}
其中,
$row['created_at']
是MySQL日期类型


谢谢你

乍一看,我猜的是不同的时区。在纯MySql中完成相同任务的不同方法如下:

select time_to_sec(timediff(now(), created_at)) as seconds_ago from `table_name`
为了帮助您进行更多调试,您可以使用以下()检查并设置mysql服务器的时区:


那么,你的问题是什么?不准确?时区是否相同?为什么出现7小时错误?是否确定
$time
是时间戳,并且它们是否在同一时区?$time是时间戳。对于时区来说,似乎是一样的;如果我现在添加一行,时间戳就是我在本地机器上的时间。我正在本地计算机(服务器)上测试此功能
select time_to_sec(timediff(now(), created_at)) as seconds_ago from `table_name`
-- 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';