检查今天是否';s的日期超过了到期日期


Check if today's date is passed the expiration date

有人能帮我吗:

<?php 
    include 'include/db_config.php';
    $result = $dbs->prepare("SELECT * FROM service_info WHERE id = :id");
    $result->bindParam(':id', $_SESSION['id']);
    $result->execute();
    for ($i=0;$i = 0; $row = $result->fetch(); $i++) {
        ?>
        <td><?php echo $row['datepicker']; ?></td>
        <?php

        $offset = strtotime("+1 day");
        $enddate = date("Y-m-d H:i:s", $offset);
        echo $enddate . "</br>";
        if ($enddate < $startdate) {
            echo "expired";
        } else {
            echo "active";
        }
    }
?>

我想要实现的是找出$row['datepicker']中保存的日期值是否在2天前。如果它是在2天前,我希望它回声expired,否则我希望它显示active

例如:$row['datepicker']可能包含日期:2016年5月18日(基于用户输入,而非固定值)。这意味着它的有效期将是:2016年5月20日。如果今天的日期大于或等于2016年5月20日,则应与expired相呼应。如果今天的日期是2016年5月19日,它应该与active相呼应,因为这还不是过去的两天。

根据您的评论,您希望使用$startdate并在其中添加两天。如果今天的日期超过了该时间,则您希望打印过期,否则打印活动。

$startdate = "16-May-2016";
$expire = strtotime($startdate. ' + 2 days');
$today = strtotime("today midnight");
if($today >= $expire){
    echo "expired";
} else {
    echo "active";
}

在这种情况下,它将呼应expired,因为在撰写本文时,我们距离5月16日已经过去了两天。如果您将$startdate更改为5月17日,它将回应active,因为这只是过去的一天。

对于您的特定问题,您希望将$startdate更改为如下所示:

$startdate = $row['datepicker'];

每当$startdate中指定的日期大于或等于过去的2天时,它将显示expired,否则它将显示活动。


我们在这里做什么

这很简单。我们利用strtotime()从您的$startdate值中获取+2 days的时间戳。然后我们在午夜得到今天的日期(因此实际时间戳相当于2016年5月18日00:00:00)。

我们的最后一步是比较这两个时间戳,看看今天的日期是否大于或等于到期日期。


注意:这假设$startdate的格式与strtotime()兼容。

在php5.2+中,您可以使用此

$today = date("Y-m-d H:i:s");  
$startdate = $row['datepicker'];   
$offset = strtotime("+1 day");
$enddate = date($startdate, $offset);    
$today_date = new DateTime($today);
$expiry_date = new DateTime($enddate);
if ($expiry_date < $today_date) { // your echo stuff }