我是否有更好的方法来计算以下内容(我试图从昨天开始提取所有“操作项目”并将它们存储在“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)));
}
上述作品,但我不确定这是否是最好的方式...
答案 0 :(得分:0)
还有改进的余地(虽然如你所说,当前的代码应该有效,所以这只是我的一些想法)。
首先,如果您只是要检查00:00:00
和23:59:59
等时间,请完全放弃时间,只使用DATE
字段而不是{{1 }}字段。它使检查变得更加容易,因为您不必担心时间。 (如果时间对于应用程序的其他部分至关重要,则应相应地调整以下示例代码。)
此外,我使用PHP的DateTime函数而不是DATETIME
和date()
,主要是因为每当我使用日期/时间数据时,它几乎都是我的习惯。这是因为DateTime为您的日期和时间数据添加了很多可能性和灵活性,而没有太多麻烦。这样的事情就是我可能想要的:
strtotime()