0

我正在尝试创建一个视图助手,它将显示从……现在过去的分钟数、小时数或天数。我不确定该怎么做。看起来日期比较有效,但我不知道如何获取数字。这是我到目前为止所拥有的:

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

我想用实际的分钟/小时/天数替换“是”。

4

3 回答 3

1

由于您已经在使用 Zend 框架,因此Zym 框架中有一个TimeSince视图助手,它是一个包含额外 ZF 扩展和助手的库。

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

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

将输出如下内容:

Last updated 8 hours ago
于 2009-10-28T20:57:55.127 回答
0

我发现 Zend_Date 更容易与时间戳一起使用。然后根据需要格式化输出(也许使用视图帮助来做到这一点)。

(如果可以的话,这将是一个评论)

于 2009-10-29T11:55:35.333 回答
0

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

$s 是秒

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

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

于 2009-10-28T20:47:13.200 回答