Получить последний n-й день предыдущего месяца (период оплаты) - PullRequest
0 голосов
/ 22 декабря 2018

Таким образом, период оплаты 20 числа каждого месяца.как я могу получить дату последнего периода оплаты?Например:

today: is 05/12 -> returns 04/20
today: is 05/20 -> returns 04/20
today: is 05/25 -> returns 05/20

как я могу это сделать в PHP?

Ответы [ 3 ]

0 голосов
/ 22 декабря 2018

Я понял это с помощью простого:

$dayNow = date('d');
if($dayNow <= '20') {
    $previousDate = strtotime($dateNow.' -1 month');
    $date = date('Y-m', $previousDate);
} else {
    $date = date('Y-m');
}
0 голосов
/ 22 декабря 2018

Если вам когда-либо понадобится сделать что-то вроде «31-й или последний» или «2-й понедельник», я бы порекомендовал использовать библиотеку rrule, например:

https://packagist.org/packages/rlanvin/php-rrule

0 голосов
/ 22 декабря 2018

Возможно, есть более элегантный способ, но это работает (многословно для ясности):

function lastPayDate($todayDayNum) {
    $month = $todayDayNum > 20 ? 'this month' : 'last month';
    return (new \DateTimeImmutable('first day of ' . $month))
        ->add(new \DateInterval('P19D'));
}

echo lastPayDate(date('d'))->format('m/d/Y');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...