Как рассчитать время, пройденное с помощью PHP или Zend_Date? - PullRequest
0 голосов
/ 28 октября 2009

Я пытаюсь создать помощника вида, который будет отображать количество минут, часов или дней, прошедших с ... прямо сейчас. Я не совсем уверен, как это сделать. Похоже, что сравнение дат работает, но я не знаю, как получить число. Вот что у меня есть:

<?php

class Zend_View_Helper_RecentDate
{
    public function recentDate($datetime)
    {
        $date = new Zend_Date($datetime);

        switch ($date) {
            case($date->isEarlier(1, Zend_Date::HOUR)):
                $message = 'was minutes ago';
                break;
            case($date->isEarlier(24, Zend_Date::HOUR)):
                $message = 'was hours ago';
                break;
            case($date->isEarlier(48, Zend_Date::HOUR)):
                $message = 'Yesterday';
                break;
            default:
                $message = 'was days ago';
                break;
        }
        return $message;
    }
}

Я хочу заменить «было» на фактическое количество пройденных минут / часов / дней.

Ответы [ 3 ]

1 голос
/ 28 октября 2009

Поскольку вы уже используете Zend Framework, в Zym Framework есть библиотека 1002 * представления , представляющая собой библиотеку дополнительных расширений и помощников ZF. *

Помощник TimeSince делает в основном именно то, что вы пытаетесь сделать:

Last updated <?= $this->timeSince($timestamp); ?> ago

Будет выводить что-то вроде:

Last updated 8 hours ago
0 голосов
/ 29 октября 2009

Я обнаружил, что Zend_Date намного легче использовать с отметкой времени. Затем отформатируйте вывод, если хотите (возможно, используйте для этого справку по представлению).

(это был бы комментарий, если бы я мог)

0 голосов
/ 28 октября 2009

$ time = sprintf ("% d часов,% d минут и% d секунд \ n", $ s / (1000 * 60 * 60), $ s / (1000 * 60), $ s);

Где $ s - секунды

при условии, что ваша $ datetime является меткой времени Unix, вы можете получить $ ms из (time() - $timestamp)

если вы хотите полностью использовать создатель нечеткой временной метки, смотрите: http://plugins.trac.wordpress.org/browser/splees-fuzzy-datetime/trunk/splees_fuzzy_datetime.php

...