有人能帮我吗:
<?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 }