Добрый день. Получаю разницу во времени так: PHP: $time = human_time_diff( $from, $to ); Выводит, например, так: 1 час, 45 минут Поделитесь пожалуйста сниппетом, чтобы выводить вплоть до секунд.
если ЧО: wp-includes/formatting.php PHP: function human_time_diff( $from, $to = '' ) { if ( empty( $to ) ) { $to = time(); } $diff = (int) abs( $to - $from ); if ( $diff < HOUR_IN_SECONDS ) { $mins = round( $diff / MINUTE_IN_SECONDS ); if ( $mins <= 1 ) $mins = 1; /* translators: Time difference between two dates, in minutes (min=minute). 1: Number of minutes */ $since = sprintf( _n( '%s min', '%s mins', $mins ), $mins ); } elseif ( $diff < DAY_IN_SECONDS && $diff >= HOUR_IN_SECONDS ) { $hours = round( $diff / HOUR_IN_SECONDS ); if ( $hours <= 1 ) $hours = 1; /* translators: Time difference between two dates, in hours. 1: Number of hours */ $since = sprintf( _n( '%s hour', '%s hours', $hours ), $hours ); } elseif ( $diff < WEEK_IN_SECONDS && $diff >= DAY_IN_SECONDS ) { $days = round( $diff / DAY_IN_SECONDS ); if ( $days <= 1 ) $days = 1; /* translators: Time difference between two dates, in days. 1: Number of days */ $since = sprintf( _n( '%s day', '%s days', $days ), $days ); } elseif ( $diff < MONTH_IN_SECONDS && $diff >= WEEK_IN_SECONDS ) { $weeks = round( $diff / WEEK_IN_SECONDS ); if ( $weeks <= 1 ) $weeks = 1; /* translators: Time difference between two dates, in weeks. 1: Number of weeks */ $since = sprintf( _n( '%s week', '%s weeks', $weeks ), $weeks ); } elseif ( $diff < YEAR_IN_SECONDS && $diff >= MONTH_IN_SECONDS ) { $months = round( $diff / MONTH_IN_SECONDS ); if ( $months <= 1 ) $months = 1; /* translators: Time difference between two dates, in months. 1: Number of months */ $since = sprintf( _n( '%s month', '%s months', $months ), $months ); } elseif ( $diff >= YEAR_IN_SECONDS ) { $years = round( $diff / YEAR_IN_SECONDS ); if ( $years <= 1 ) $years = 1; /* translators: Time difference between two dates, in years. 1: Number of years */ $since = sprintf( _n( '%s year', '%s years', $years ), $years ); } /** * Filters the human readable difference between two timestamps. * * @since 4.0.0 * * @param string $since The difference in human readable text. * @param int $diff The difference in seconds. * @param int $from Unix timestamp from which the difference begins. * @param int $to Unix timestamp to end the time difference. */ return apply_filters( 'human_time_diff', $since, $diff, $from, $to ); } --- Добавлено --- секунды не учитывались
Про секунды в Wordpress я знаю. Ну, собственно, и разницу в секундах между датами я тоже получил. Может, кто видел, как на php преобразовать, например, 200 секунд в 3 минуты 20 секунд.
Ну, по-хорошему надо еще взять функцию, которая будет правильно склонять существительные. А то можно получить "8 минуты 22 секунд"
Полагаю, что с Timestamp проблем не возникнет. Вот еще способ: С вордпресс не практиковался, возможно понадобиться написать в начале файла: PHP: use DateTime; PHP: $from = DateTime::createFromFormat("Y-m-d H:i:s", "2016-06-01 15:13:12"); // (формат передаваемой даты, передаваемая дата) $to = new DateTime('now'); echo $from->diff($to)->format('%m месяц(-ев) %d дней(-я) %H час(-ов) %i минут(-у,-ы) %s секунд(-ы) назад');