【发布时间】:2014-10-21 18:07:01
【问题描述】:
假设我有一个初始日期,其年份早于当年,我想每 7 天重复一次该事件,但仅限于当年。
如何找到当年的第一次出现?
我意识到我可以用这样的循环来做到这一点:
$reOccurringEvent =new DateTime('2013-12-01');
$interval = new DateInterval('P7D');
while($reOccurringEvent->format('Y') < date('Y') ){
$reOccurringEvent->add($interval);
}
echo $reOccurringEvent->format('d m Y'); //05 01 2014
但令我震惊的是,应该有一种更有效的方法来实现这一点,而不是重复地在日期上添加一个间隔(如果初始日期是几年前,它会发生很多次)。
我希望能够计算应该添加间隔的次数,并且只执行一次。
我在想这样的事情:
$date = new DateTime();
$diff = $date->diff($reOccurringEvent)->days%7;
但显然这行不通,我无法完全弄清楚如何做到这一点的逻辑。
【问题讨论】: