有人可以帮我解决这个问题:
<?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
,因为它过去还不到两天。
答案 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 }