在连续循环中获取开始日期和结束日期之间的$ date

时间:2010-02-18 10:38:53

标签: php loops while-loop

试图找出实现以下方案的方法: -

用户创建初始时间段,例如2013年1月1日至2013年7月1日以及更新期限,例如每1个月一次。

我正在开发一个功能: -

  1. 检测函数中传递的日期(可能是任何日期)是否符合用户要求的期限。
  2. 例如: -

    该功能可能接受以下日期21/02/2019。基于此,我需要检测用户所处的更新周期。

    我想要实现这个目标的方式是: -

    1. 在用户初始开始日期添加一天以获取最新续订日期。
    2. 将续订期(1个月)添加到此处以获取最新的结束日期。
    3. 继续执行此操作,直到我根据用户续订周期类型检测日期之间的开始和结束日期,例如: 1个月。
    4. 有点令人困惑,但这种总结了我所追求的但不起作用: -

      $tmpStartDate=$endDate;   
      do{
      $tmpStartDate=date("Ymd",strtotime($tmpStartDate .'+1 Day'));
      $tmpEndDate=date("Ymd",strtotime($tmpStartDate .'+'.$timingUnitVal .' '.$timingUnit));
      } while($date<$tmpStartDate&&$date>$tmpEndDate);
      

      $ endDate是用户最初输入的结束日期。

1 个答案:

答案 0 :(得分:1)

从我可以从你的问题中收集到的内容,大致沿着这些方向的内容会更正确吗?

function findPeriod($lowerBound, $upperBound, $repeatEvery, $date)
{
  $lowerBound = strtotime($lowerBound);
  $upperBound = strtotime($upperBound);
  $repeatEvery = strtotime('+' . $repeatEvery) - time();
  $date = strtotime($date);

  while ($date >= $lowerBound) {
    if ($date <= $upperBound) {
      return array($lowerBound, $upperBound);
    } else {
      $lowerBound += $repeatEvery;
      $upperBound += $repeatEvery;
    }
  }

  return false;
}