获取上个月的第n天(付款期)

时间:2018-12-21 21:33:26

标签: php date datetime time

因此,支付期是每月的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 :(得分:0)

我用一个简单的方法解决了这个问题:

$dayNow = date('d');
if($dayNow <= '20') {
    $previousDate = strtotime($dateNow.' -1 month');
    $date = date('Y-m', $previousDate);
} else {
    $date = date('Y-m');
}

答案 1 :(得分:0)

如果您需要做“ 31st or last”或“ 2nd Monday”之类的事情,建议您使用以下规则库:

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

答案 2 :(得分:-1)

也许有一种更优雅的方法,但这可行(为清晰起见,很详细):

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');