CakePHP:日期范围

时间:2012-02-14 22:25:23

标签: cakephp

我是否有更好的方法来计算以下内容(我试图从昨天开始提取所有“操作项目”并将它们存储在“paste_due”中,以及今天的所有操作项目并将它们存储在“今天”中) - 这是我的“代理”控制器内部(代理'hasMany'ActionItem和ActionItem'belongsTo'代理):

public function planner() {

    $yesterday = date("Y-m-d 23:59:59", strtotime("yesterday"));
    $conditions = array('ActionItem.due <' => $yesterday, 'ActionItem.agent_id' => '1');
    $this->set('past_due', $this->Agent->ActionItem->find('all', array('conditions' => $conditions)));

    $today = date("Y-m-d 00:00:00", strtotime("today"));
    $today_end = date("Y-m-d 23:59:59", strtotime("today"));
    $conditions = array('ActionItem.due >' => $today, 'ActionItem.due <' => $today_end, 'ActionItem.agent_id' => '1');
    $this->set('today', $this->Agent->ActionItem->find('all', array('conditions' => $conditions)));
}

上述作品,但我不确定这是否是最好的方式...

1 个答案:

答案 0 :(得分:0)

还有改进的余地(虽然如你所说,当前的代码应该有效,所以这只是我的一些想法)。

首先,如果您只是要检查00:00:0023:59:59等时间,请完全放弃时间,只使用DATE字段而不是{{1 }}字段。它使检查变得更加容易,因为您不必担心时间。 (如果时间对于应用程序的其他部分至关重要,则应相应地调整以下示例代码。)

此外,我使用PHP的DateTime函数而不是DATETIMEdate(),主要是因为每当我使用日期/时间数据时,它几乎都是我的习惯。这是因为DateTime为您的日期和时间数据添加了很多可能性和灵活性,而没有太多麻烦。这样的事情就是我可能想要的:

strtotime()