我正在尝试以mm-yy
的格式获取信用卡到期日期,看看该日期是否已过,所以我知道信用卡是否已过期。如果已过期,则会在expired
<tr>
问题 我的代码导致样本日期为05/16被检查,并且脚本显示该卡未显示该显卡已有一年之久。
我的代码
<?php foreach($card_historys as $card_history){
$expired = "";
$date = strtotime($card_history->expire); //Returns a date in mm/yy
$noww = strtotime(date('m/y'));
echo "expire: ".$date." / now: ".$noww."<br>";
if($date < $noww){$expired = 'expired';}
?>
<tr class="<?php echo $expired; ?>">
先谢谢了,我已经尝试过搜索,但没有一个解决方案似乎适合我正在做的事情。
答案 0 :(得分:7)
使用PHP的内置日期功能时,您需要确保使用valid datetime format。否则strtotime()
将返回false
,DateTime()
将引发异常。
要使用非标准日期时间格式,您可以使用DateTime::createFromFormat()
来解析日期时间字符串并返回DateTime()
对象,您可以从中get a Unix Timestamp,convert the date into another format或用它来比较其他DateTime
个对象。
// Date separated by dots
$date01 = \DateTime::createFromFormat('Y.m.d', '2017.04.18');
// Date with no separator
$date02 = \DateTime::createFromFormat('Ymd', '20170418');
// Get Unix timestamp
$timestamp = $date01->getTimestamp();
// Get MySQL format (ISO-8601)
$mysqlDate = $date02->format('Y-m-d');
因此,对于您的问题,您将执行以下操作:
$expires = \DateTime::createFromFormat('m/y', $card_history->expire);
$today = new \DateTime();
if($expires < $today){$expired = 'expired';}
另见: