我有一个函数可以计算文章写入的时间,然后返回调用它时获得的任何值。但是我得到了通知消息,这是一个错误,我想要压制但是解决。
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] . " " .
答案 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