代码之家  ›  专栏  ›  技术社区  ›  Attila Naghi

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

  •  1
  • Attila Naghi  · 技术社区  · 7 年前

    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 . 我只需要使用 DateTime 班我该怎么做?有没有办法使用DateTime类从月份和年份中获取最后一天?如果我能让别人用 ,我的功能应该工作。

    3 回复  |  直到 7 年前
        1
  •  1
  •   splash58    7 年前

    将天设置为当月的第一天,然后修改为最后一天

    $creditCardDate = new DateTime("{$cardDate->card_expiryYear}-{$cardDate->card_expiryMonth}-1");
    $creditCardDate->modify('last day of this month');
    
        2
  •  0
  •   Erik    7 年前

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

    $creditCardDate->modify('last day of this month');
    
        3
  •  0
  •   deceze    7 年前

    当然不使用更容易 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');