Как получить разницу во времени между датой публикации и настоящим моментом?


Я хочу получить разницу во времени, например "опубликовано 2 дня назад".

Я знаю, что вы можете использовать следующее, чтобы понять разницу.

human_time_diff( get_the_time('U'), current_time( 'timestamp' ) ) . ' ago';

Но я не хочу использовать это

        date_default_timezone_set('Australia/Melbourne'); // set the time zone
        $timestamp = strtotime( $post->post_date ); // get timestamp
        $now =  time();// get the curren time
        $time_passed = $timestamp - $now; // get the differnece

    // display time
    $min = $time_passed / 60;
    if( $min < 60 ) {
        return sprintf( avantgardia__( '%s min. ago', 'newspeak' ), intval( $min) );
    }
Author: Mais_Cule, 2018-10-16

1 answers

Попробуйте date_diff() / DateTime::diff() функция в PHP:

// Object-oriented style.
$datetime1 = new DateTime( $post->post_date );
$datetime2 = new DateTime(); // current date
$interval = $datetime1->diff( $datetime2 );
echo $interval->format( '%a days old' );

// .. or procedural style.
$datetime1 = date_create( $post->post_date );
$datetime2 = date_create(); // current date
$interval = date_diff( $datetime1, $datetime2 );
echo $interval->format( '%a days old' );

В PHP 5.2.2 или более поздней версии вы можете сравнить дату ("назад" и "позже") следующим образом:

if ( $datetime1 < $datetime2 ) {
    echo $interval->format( 'Published %a days ago.' );
} elseif ( $datetime1 > $datetime2 ) {
    echo $interval->format( 'Will be published in %a days later.' );
} else {
    echo 'Published today.';
}
 2
Author: Sally CJ, 2018-10-16 03:24:21