如何计算PHP或Zend_Date传递的时间?

时间:2009-10-28 20:23:47

标签: php zend-framework date zend-date

我正在尝试创建一个视图助手,它将显示自......以来已经过去的分钟数,小时数或天数。我不太确定该怎么做。看起来日期比较工作,但我不知道如何获得数字。这是我到目前为止所做的:

<?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;
    }
}

我想将“was”替换为实际的分钟/小时/天数。

3 个答案:

答案 0 :(得分:1)

由于您已经在使用Zend Framework,TimeSince view helper中有一个Zym Framework,它是一个额外的ZF扩展和帮助程序库。

TimeSince助手基本上完全符合您的要求:

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

将输出如下内容:

Last updated 8 hours ago

答案 1 :(得分:0)

  

$ time = sprintf(“%d小时,%d分钟和%d秒\ n”,$ s /(1000 * 60 * 60),$ s /(1000 * 60),$ s);

其中$ s是秒

假设您的$ datetime是unix时间戳,您可以从(time() - $timestamp)获得$ ms

如果你想要一个完整的模糊时间戳创建者,请参阅: http://plugins.trac.wordpress.org/browser/splees-fuzzy-datetime/trunk/splees_fuzzy_datetime.php

答案 2 :(得分:0)

我发现Zend_Date很容易使用时间戳。然后根据需要格式化输出(可能使用视图帮助来执行此操作)。

(如果可以,这本来就是评论)