我创建了一个比较日期的函数:
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;
}
我只有month
和year
,而不是day
。我需要仅使用month
和year
以及DateTime
类将今天的日期与该日期进行比较。我怎样才能做到这一点 ?有没有办法使用DateTime类从一个月和一年获得最后一天?如果我能使用DateTime
得到某人,我的功能应该有效。
答案 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_expiryMonth
与201709
类似;使用一些数字格式来实现这种格式,否则:
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');