2017-05-16 4 views
1

Mein Arbeitgeber zahlt alle zwei Wochen an einem Freitag.Ermitteln des nächsten Zahlungstermins basierend auf dem heutigen Datum

sagen Lassen Sie das Startdatum 14. April war

Nach Bezahlung Tage sind: 28. April 12. Mai 26. Mai und so weiter ...

Ich möchte die neben einführen können Zahltag im Datetime-Format für eine Datenbank relativ zu CURDATE().

Beispiel: Wenn der Code am 22. Mai ausgeführt wird, würde der Eintrag 2017.05.26 00.00.00

werden, wenn der Code am 1. Juni laufen wird, würde der Eintrag 2017 -06-09 00:00:00

Wenn der Code am selben Tag wie der Zahltag ausgeführt wird, wird der nächste Zahltag angezeigt.

am selben Tag Beispiel: Wenn der Code am 9. Juni laufen wird, würde der Eintrag 2017.06.23 00.00.00

sein, was ich habe versucht:

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

Antwort

1

Um den nächsten Freitag von heute zu bekommen (auch wenn heute ein Freitag):

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

Um den nächsten Freitag von einem Zeitpunkt zu erhalten:

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

Um den nächsten Freitag und 1 Woche zu erhalten:

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

Es gibt viele Möglichkeiten, oder die DateTime Class überprüfen.

1

Ihr Ansatz ist richtig, das einzige, was Sie brauchen, ist in der Datenbank das letzte Zahlungsdatum zu speichern, und berechnen Sie die nächste basierend darauf, dann spielt es keine Rolle, wenn der Code ausgeführt wird, das nächste Zahlungsdatum basierend berechnet wird letzter Zahlungstermin:

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

, wenn der Code noch am selben Tag der Zahlung ausführen, aktualisieren $lastPayDay mit dem aktuellen Datum gewährleisten.

Verwandte Themen