Я использую функцию (нашел ее в Интернете), которая вычисляет время, прошедшее до сих пор. Я передаю два параметра: дату публикации и текущую дату. он вернет годы, месяцы, дни, часы, минуты ИЛИ секунды. он использует функцию сравнения дат PHP 5.3, которая не работает в версии 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
Теперь мне нужна эквивалентная функция «назад», которая будет делать то же самое, в зависимости от объекта $interval.
Спасибо огромное
Дополнительная информация: ни одно из предоставленных решений не сделало то, что я искал. Я должен улучшить свое объяснение, извините. В конце концов, мне нужно, чтобы объект $interval имел следующее:
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) }
Нет необходимости менять так много вещей.
date( ... )
, если вы не знали: php.net/manual/en/function.date.php - person ale   schedule 21.02.2012new Zend_Date()
в своем коде... - person dbrumann   schedule 21.02.2012