Sürekli bir döngü başlangıç ​​ve bitiş tarihleri ​​arasında bir tarih $ alın

1 Cevap php

Aşağıdaki senaryoyu ulaşmanın bir yolu anlamaya çalışıyorum: -

Kullanıcı, örneğin bir ilk zaman aralığı oluşturur 2013/01/07 için 01/01/2013 ve yenileme dönemi örn. her 1 ay.

Yapacağım bir işlev üzerinde çalışıyorum: -

  1. Bir işleve geçirilen tarih (herhangi bir tarih olabilir), kullanıcıların ihtiyaçlarına uygun bir dönem denk olup olmadığını algılar.

Örneğin: -

Fonksiyonu aşağıdaki tarihi 21/02/2019 kabul edebilir. Bu dayanarak ben kullanıcı içeri hangi yenileme dönemi algılamak gerekiyor

Ben bu ulaşmanın düşünüyordum yolu gereğidir: -

  1. Yeni yenileme tarihi almak için kullanıcıların ilk başlangıç ​​tarihinden bir gün ekleyin.
  2. Yeni bitiş tarihi almak için bu yenileme süresi (1 ay) ekleyin.
  3. Ben başlangıç ​​ve bitiş tarih kullanıcıların yenilenme dönemi tipi, örneğin dayalı arasına düşer Tarihleri ​​algılamak kadar yapmaya devam et 1 ay.

Kafa karıştırıcı ama biraz sonra yaşıyorum ama ne özetliyor bu tür çalışma değil: -

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

$ EndDate başlangıçta kullanıcı tarafından girilen bitiş tarihidir.

1 Cevap

Senin sorunun, kabaca bu satırlar boyunca bir şey toplamak ne daha doğru olurdu?

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;
}