【发布时间】:2014-02-01 14:41:54
【问题描述】:
我有一个函数应该计算一篇文章是多久以前写的,然后在调用它时返回它得到的任何值。但是我收到了通知消息,这是一个我不想抑制但要解决的错误。
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] . " " .
【问题讨论】:
-
你在爆炸前得到的 $date 是什么?
-
分解 $date 变量后,在其上执行
print_r()以查看数组包含的内容。看来您传递的$date值不正确。 -
@AbhikChakraborty $date before explode 是这种格式 2013-12-01 08:16:32
-
@PhilCross,在调用 explode() 之前,传递给函数的日期采用上述格式,即 0000-00-00 00:00:00
-
并在 $date = $values[2] 上输出您想要的。 “-”。 $价值[1]。 “-”。 $价值[5]。 “”。 ?