Я использую функцию (найденную в Интернете), которая вычисляет время, прошедшее до сих пор. Я передаю два параметра: дата публикации и текущая дата. он будет возвращать годы, месяцы, дни, часы, минуты или секунды. он использует PHP 5.3 в функцию даты различия, который не будет делать в версии 5.2 :(php 5.3 date diff эквивалентен PHP <= 5.2 по собственной функции
function pluralize($zaehler, $inhalt) {
return trim($zaehler . (($zaehler == 1) ? (" $inhalt") : (" ${inhalt}s"))." ago");}function ago($datetime, $datetime_post){
$interval = date_create($datetime_post)->diff(date_create($datetime));
if ($interval->y >= 1) return pluralize($interval->y, 'year');
if ($interval->m >= 1) return pluralize($interval->m, 'month');
if ($interval->d >= 1) return pluralize($interval->d, 'day');
if ($interval->h >= 1) return pluralize($interval->h, 'hour');
if ($interval->i >= 1) return pluralize($interval->i, 'minute');
if ($interval->s >= 1) return pluralize($interval->s, 'second');}
пример:
$post_date_time = "01/01/2012 11:30:22";
$current_date_time = "02/02/2012 07:35:41";
echo ago($current_date_time, $post_date_time);
выведет:
1 month
Теперь мне нужен эквивалент функция «назад», которая будет делать то же самое, в зависимости от объекта с интервалом $.
большое вам спасибо
Дополнительная информация: Ни одно из предлагаемых решений на самом деле не то, что я искал. Мне нужно улучшить объяснение, извините. В конце концов, мне нужно только $ объект интервала быть с этим:
object(DateInterval)#3 (8) { ["y"]=> int(0) ["m"]=> int(1) ["d"]=> int(0) ["h"]=> int(20) ["i"]=> int(5) ["s"]=> int(19) ["invert"]=> int(0) ["days"]=> int(6015) }
не нужно менять так много вещей.
Не можете ли вы использовать http://stackoverflow.com/questions/676824/how-to-calculate-the-difference-between-two-dates-using-php? – ale
Кроме того, вы можете получить текущую дату с помощью функции 'date (...)' PHP, если вы этого не знали: http://php.net/manual/en/function.date.php – ale
Это очень легко получить разницу между двумя датами, в секундах. Преобразование секунд в часы, минуты и дни тривиально. Преобразование в месяцы и годы ... это легко, если вы считаете, что каждый месяц составляет 30 дней и каждый год имеет 12 30-дневных месяцев. Является ли это решение приемлемым? –