echo time_diff_string('2013-05-01 00:22:35', 'now');
echo time_diff_string('2013-05-01 00:22:35', 'now', true);
4 months ago
4 months, 2 weeks, 3 days, 1 hour, 49 minutes, 15 seconds ago
function time_diff_string($from, $to, $full = false) {
$from = new DateTime($from);
$to = new DateTime($to);
$diff = $to->diff($from);
$diff->w = floor($diff->d / 7);
$diff->d -= $diff->w * 7;
$string = array(
'y' => 'year',
'm' => 'month',
'w' => 'week',
'd' => 'day',
'h' => 'hour',
'i' => 'minute',
's' => 'second',
);
foreach ($string as $k => &$v) {
if ($diff->$k) {
$v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : '');
} else {
unset($string[$k]);
}
}
if (!$full) $string = array_slice($string, 0, 1);
return $string ? implode(', ', $string) . ' ago' : 'just now';
}
Вы путаете две разные функции, которые обе называются after
.
Когда вы вызываете $(something).after()
, вы вызываете метод jQuery after
, который говорит:
HTML-строка, элемент DOM, текстовый узел, массив элементов и текст узлы или объект jQuery для вставки после каждого элемента в наборе соответствующих элементов.
blockquote>Когда вы вызываете
$(something)[index].after()
, вы извлекаете элемент DOM из объекта jQuery и вызываете метод DOMafter
, который сообщает:[1113 ] Объекты DOMString вставляются как эквивалентные текстовые узлы.blockquote>
Используйте
$(something).eq(index)
, чтобы получить объект jQuery, содержащий одно из совпадений, если вы хотите использовать метод jQueryafter
.