Get a $date between start and end dates on a continuous loop
Trying to figure out a way of achieving the following scenario:-
The user creates an initial time per开发者_如何学Goiod e.g. 01/01/2013 to 01/07/2013 and a renewal period e.g. every 1 month.
I'm working on a function that will:-
- Detect whether the date passed in a function (could be any date) falls a period matching the users requirements.
 
For example:-
The function may accept the following date 21/02/2019. Based on this I need to detect which renewal period the user is in.
The way I was thinking of achieving this is by:-
- Add one day to the users initial start date to get the newest renewal date.
 - Add the renewal period (1 month) to this to get the newest end date.
 - Keep doing this until I detect which start and end dates the date falls between based on the users renewal period type e.g. 1 month.
 
A bit confusing but this kind of sums up what I'm after but isn't working:-
$tmpStartDate=$endDate;   
do{
$tmpStartDate=date("Ymd",strtotime($tmpStartDate .'+1 Day'));
$tmpEndDate=date("Ymd",strtotime($tmpStartDate .'+'.$timingUnitVal .' '.$timingUnit));
} while($date<$tmpStartDate&&$date>$tmpEndDate);
$endDate is the end date initially entered by the user.
From what I can gather from your question, something roughly along these lines would be more correct?
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;
}
 加载中,请稍侯......
      
精彩评论