Хитрость в том, чтобы найти первую дату соответствующего месяца, а затем добавить шестнадцать дней.
Эти modify()
выражения полезны.
$mydate->modify ("first day of this month")->modify("+ 16 days");
$mydate->modify ("first day of next month")->modify("+ 16 days");
Далее вы можете определить, какой из них вам нужен:
if ($mydate->format("d") > 17) ...
Соберите все вместе, как показано ниже:
$mydate = DateTime::createFromFormat("d/m/Y", $startdate);
if ($mydate->format("d") > 17) {
$mydate->modify ("first day of this month")->modify("+ 16 days");
}
else {
$mydate->modify ("first day of next month")->modify("+ 16 days");
echo $mydate->format('Y-m-d') . "<br/>\r\n";
И, когда вы тестируете этот видКонечно, проверьте его с днями в декабре и феврале, чтобы убедиться, что логика смены года и пролонгации месяца работает правильно.