格式化MySql时间以显示给客户端,未定义的偏移量错误

时间:2014-02-01 14:41:54

标签: php mysql

我有一个函数可以计算文章写入的时间,然后返回调用它时获得的任何值。但是我得到了通知消息,这是一个错误,我想要压制但是解决。

function getTimeAgo($date,$granularity=1){

    $values = explode(" ",$date);
    $time = new DateTime('now', new DateTimeZone('UTC'));//GET CURRENT UTC TIME
    $date = $values[2] . "-" . $values[1] . "-" . $values[5] . " " . $values[3];    
    $difference = strtotime($time->format('Y-m-d H:i:s')) - strtotime($date);
    $retval='';
    $periods = array('decade' => 315360000,
    'year' => 31536000,
    'month' => 2628000,
    'week' => 604800, 
    'day' => 86400,
    'hour' => 3600,
    'min' => 60,
    'sec' => 1);

    foreach ($periods as $key => $value) {
    if ($difference >= $value) {
        $time = floor($difference/$value);
        $difference %= $value;
        $retval .= ($retval ? ' ' : '').$time.' ';
        $retval .= (($time > 1) ? $key.'s' : $key);
        $granularity--;
    }
    if ($granularity == '0') { break; }
    }
    return $retval.' ago';
}   

}

错误:是否在此特定位置存在未定义的偏移[2],[1],[5]和[3]

$date = $values[2] . "-" . $values[1] . "-" . $values[5] . " " . 

1 个答案:

答案 0 :(得分:3)

您的函数接受$ date值为2013-12-01 08:16:32

这样做

$values = explode(" ",$date);

将为您提供数组

$values[0] = 2013-12-01
$values[1] = 08:16:32

所以

$date = $values[2] . "-" . $values[1] . "-" . $values[5] . " " 

不会有索引2,5 ....

如果函数接收到空数据,则执行explode将返回所有无效索引。

您可以直接在

中使用参数中的$ date
$difference = strtotime($time->format('Y-m-d H:i:s')) - strtotime($date);

如果传递的值的格式为2013-12-01 08:16:32