因此,支付期是每月的20号。我如何获得最后一个支付期的日期?例如:
today: is 05/12 -> returns 04/20
today: is 05/20 -> returns 04/20
today: is 05/25 -> returns 05/20
如何在PHP中做到这一点?
答案 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”之类的事情,建议您使用以下规则库:
答案 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');