使用PHP中的DateTime类的日期比较问题

时间:2017-11-10 08:31:54

标签: php datetime

我创建了一个比较日期的函数:

public function checkExpiredDate($cardDate) : bool
{
     $currentDate = new DateTime();
     $creditCardDate = new DateTime("{$cardDate->card_expiryYear}-{$cardDate->card_expiryMonth}-*last day from the month*");
     echo $creditCardDate->format('Y-m-d'); exit();
     return $creditCardDate->getTimestamp() < $currentDate->getTimestamp() ?? true;
}

我只有monthyear,而不是day。我需要仅使用monthyear以及DateTime类将今天的日期与该日期进行比较。我怎样才能做到这一点 ?有没有办法使用DateTime类从一个月和一年获得最后一天?如果我能使用DateTime得到某人,我的功能应该有效。

3 个答案:

答案 0 :(得分:1)

将日期设置为该月的第1天,然后修改为最后一天

$creditCardDate = new DateTime("{$cardDate->card_expiryYear}-{$cardDate->card_expiryMonth}-1");
$creditCardDate->modify('last day of this month');

答案 1 :(得分:0)

当然,在这里根本不使用DateTime更容易:

return $cardDate->card_expiryYear . $cardDate->card_expiryMonth <= date('Ym');

这假定$cardDate->card_expiryYear . $cardDate->card_expiryMonth201709类似;使用一些数字格式来实现这种格式,否则:

return sprintf('%d%02d', $cardDate->card_expiryYear, $cardDate->card_expiryMonth) <= date('Ym');

答案 2 :(得分:0)

http://php.net/manual/en/datetime.modify.php

$creditCardDate->modify('last day of this month');