检查今天的日期是否过期了

时间:2016-05-18 13:55:37

标签: php

有人可以帮我解决这个问题:

<?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,因为它过去还不到两天。

2 个答案:

答案 0 :(得分:5)

根据your comments,您想要$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,因为这只是过去的1天。

针对您的具体问题,您希望将$startdate更改为如下所示:

$startdate = $row['datepicker'];

每当$startdate中指定的日期过去大于或等于2天时,它都会显示expired,否则会显示有效。

我们在这做什么?

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

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

注意:这假定您的$startdate采用的格式与strtotime()兼容。

答案 1 :(得分:1)

在php 5.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 }