間隔を言葉に変換しようとしています。このエラーに遭遇しましArgument 1 passed to Database::intervalToWords() must be an instance of DateInterval, string given
た。エラーが発生しないようにするには、どうすればこれを解決できますか?
//query from database
function one() {
$posted = htmlspecialchars(strtotime($row['posted']),ENT_QUOTES);
$time_now = time(); //current date/time
$newposted = date('Y-m-d h:i:s',($time_now-$posted));
$newposted = $this->intervalToWords($newposted);
}
function intervalToWords(DateInterval $interval)
{
$intervalStr = '';
if ($interval->y > 0) {
//if over a year
$intervalStr = 'Over ' . $interval->y . ' year' . ($interval->y > 1 ? 's' : ''); //years or year
} else {
if ($interval->m > 2) {
//if over 2 months
$intervalStr = $interval->m . ' months';
} else if ($interval->m > 0) {
//if a month
$intervalStr = $interval->m . ' month' . ($interval->m > 1 ? 's' : '') . ' and ' . $interval->d . ' day' . ($interval->d > 1 ? 's' : '');
} else {
if ($interval->d > 1) {
//if over a day
$intervalStr = $interval->d . ' days';
} else if($interval->d == 1) {
//if a day
$intervalStr = '1 day, ' . $interval->h . ' hour' . ($interval->h > 1 ? 's' : '');
} else {
if ($interval->h > 0) {
//if over an hour
$intervalStr = $interval->h . ' hour' . ($interval->h > 1 ? 's' : '') . ', ';
}
if ($interval->i > 0) {
//if over a minute
$intervalStr .= $interval->i . ' minute' . ($interval->i > 1 ? 's' : '');
} else {
$intervalStr = 'less than 1 minute';
}
}
}
}
return $intervalStr . ' ago';
}