时间前功能PHP不工作?

时间:2015-01-14 18:11:03

标签: php datetime mysqli

出于某种原因,当我通过我的功能通过我的日期时间时,它会带回45年前的#34;即使日期时间等于2015-01-14 17:27:13。

这是代码

功能:

function time_elapsed_string($ptime)
{
    $etime = time() - $ptime;

    if ($etime < 1)
    {
        return '0 seconds';
    }

    $a = array( 365 * 24 * 60 * 60  =>  'year',
                 30 * 24 * 60 * 60  =>  'month',
                      24 * 60 * 60  =>  'day',
                           60 * 60  =>  'hour',
                                60  =>  'minute',
                                 1  =>  'second'
                );
    $a_plural = array( 'year'   => 'years',
                       'month'  => 'months',
                       'day'    => 'days',
                       'hour'   => 'hours',
                       'minute' => 'minutes',
                       'second' => 'seconds'
                );

    foreach ($a as $secs => $str)
    {
        $d = $etime / $secs;
        if ($d >= 1)
        {
            $r = round($d);
            return $r . ' ' . ($r > 1 ? $a_plural[$str] : $str) . ' ago';
        }
    }
}

当我调用它时,我使用MySQLI查询的结果调用它,它显示为&#34; 2015-01-14 17:27:13&#34;。

2 个答案:

答案 0 :(得分:5)

更改函数的第一行,以便从秒中减去秒数:

$etime = time() - strtotime($ptime);

答案 1 :(得分:4)

45年前的UNIX timestamp是0.检查您传递函数的数据以确保它有效。

如果您正在传递MySQL日期字符串,time() - '2015-01-14 17:27:13'现在大约等于1421257297,因为(int)'2015-01-14 17:27:13'会变成2015