2017-05-16 9 views
1

私の雇用者は金曜日に2週間ごとに支払う。今日の日付に基づいて次の支払日を決定する

のは有料の日に続いて開始日が4月14

だったとしましょうは、次のとおりである: 4月28日 5月12日 5月26日と...

私は次を挿入することができるようにしたいですCURDATE()を基準にしてデータベースの日時フォーマットで支払う日。

例:コードは、5月22日に実行されている場合は 、エントリーはコードが6月1日に実行されている場合は、エントリは2017になります2017年5月26日午後12時00分00秒

だろう-06-09 00:00:00

コードを支払日と同じ日に実行すると、次の支払日に戻ります。

即日例: コードは6月9日に実行された場合は、エントリは、私が試したどのような2017年6月23日午後12時00分00秒

次のようになります。

今日から次の金曜日を取得するためにUPDATE

$StartDate = strtotime('2017-05-12'); //Start date from which we begin count 
$CurDate = date("Y-m-d"); //Current date. 
$NextDate = date("Y-m-d", strtotime("+2 week", $StartDate)); //Next date = +2 week from start date 
$tomorrow = date('Y-m-d',strtotime($CurDate . "+1 days")); 

if($CurDate == $NextDate){$CurDate = $tomorrow;} 
while ($CurDate > $NextDate) { 
    $NextDate = date("Y-m-d", strtotime("+2 week", strtotime($NextDate))); 
} 

echo date("Y-m-d", strtotime($NextDate)), "\n"; 

答えて

1

(今日は金曜日であっても):

echo date('Y-m-d', strtotime('next friday')); 

日から次の金曜日取得するには:

$start = strtotime('April 14'); 
echo date('Y-m-d', strtotime('next friday', $start)); 

を次の金曜日プラス1週間を取得するには:

$start = strtotime('April 14'); 
echo date('Y-m-d', strtotime('next friday +1 week', $start)); 

そこに多くの可能性がある、またはDateTime Classを確認してください。

1

あなたのアプローチは正しいです、唯一必要なのはデータベースに最後の支払い日を格納し、これに基づいて次の計算を行い、コード実行時に関係なく次の支払日が計算されます最新の支払日:

$nextPayDay = (clone $lastPayDay)->modify('Friday + 2 weeks'); 

コードが支払いの同じ日に実行した場合、現在の日付で更新$lastPayDayを確保します。

関連する問題