【发布时间】:2014-05-30 11:02:45
【问题描述】:
我正在创建提醒。我需要在给定频率和开始日期的情况下计算下一个日期。频率可以是每周、每月、每季度、每年。
下面的代码是一个开始:
$date = new DateTime($start_date);
switch ($frequency) {
case: 'weekly'
$interval = 'P1W';
break;
case: 'monthly'
$interval = 'P1M';
break;
case: 'quarterly'
$interval = 'P3M';
break;
case: 'annually'
$interval = 'P1Y';
break;
}
$date->add(new DateInterval($interval));
echo $date->format('Y-m-d');
问题是$start_date可能在遥远的过去。
例如,如果$start_date 是2014-04-01 并且频率是weekly,则会在过去为2014-04-08 创建提醒。
我需要添加逻辑以确保为将来的下一个间隔创建提醒。
我考虑通过确定$start_date 的日期作为间隔,然后添加间隔来确定最近的日期。
应该是直截了当的,但这是漫长的一天的结束。希望社区提供一些见解。
【问题讨论】:
-
为什么需要这个?你总是添加到给定的日期,那为什么要设置在过去呢?
-
$start_date是原始提醒的日期。所以我不会总是添加。有时我正在创建(或重新启动)来自遥远过去的$start_date的提醒。 -
反对者愿意分享吗?