5

我在下面的脚本上遇到了问题,假设$exp_date是从数据库中检索到的,我想将到期日期与今天的日期进行比较,以检查会员资格是否仍然有效。

没有什么可显示的,只有Time Expired,代码有什么问题?

从 db 中的 expiry 列检索到的数据设置为 varchar(由前同事构建)。

$exp_date = "22/01/2014";
$todays_date = date("d/m/Y");
$today = strtotime($todays_date); 
$expiration_date = strtotime($exp_date);
echo $expiration_date.' | '.$today.'<br>';
if($expiration_date > $today){ 
    echo 'Still Active';
} else { 
    echo 'Time Expired';
}

任何人都可以帮忙吗?

4

5 回答 5

16

这是工作代码

 <?php
 $exp_date = "22/01/2014";
  $exp_date = str_replace('/', '-', $exp_date);
  $todays_date = date("d-m-Y");
  $today = strtotime($todays_date); 
  $expiration_date = strtotime($exp_date);

  echo $expiration_date.' | '.$today.'<br>';

  if($expiration_date > $today){ 
      echo 'Still Active';
  } else { 
      echo 'Time Expired';
  }
?>

实际上 strtotime() 不适用于格式 'd/m/Y'

希望它可以帮助你。

于 2013-03-13T07:29:58.067 回答
6

strtotime()手册上的注释。

m/d/y或格式中的日期d-m-y通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠 (/),则假定为美式 m/d/y;而如果分隔符是破折号 (-) 或点 (.),则假定为欧洲 dmy 格式。

为避免潜在的歧义,最好使用 ISO 8601 (YYYY-MM-DD) 日期或DateTime::createFromFormat()尽可能使用。

于 2013-03-13T07:25:10.067 回答
1
<?php
  $exp_date = "22/01/2014";
  $exp_date = str_replace('/', '-', $exp_date);
  $todays_date = date("d-m-Y");
  $today = strtotime($todays_date); 
  $expiration_date = strtotime($exp_date);

  echo $expiration_date.' | '.$today.'<br>';


  if($expiration_date > $today){ 
      echo 'Still Active';
  } else { 
      echo 'Time Expired';
  }
?>
于 2017-02-07T19:25:04.623 回答
0

您可以在 mysql 本身中执行此操作,如下所示:

select if(cur_date()>expire_date,'expire','active') as status from tableName
于 2013-03-13T07:26:48.647 回答
-1

像这样试试

$todays_date=date('d/m/y');
$tempArr=explode('/', "22/01/2014");
$exp_date = date("d/m/y", mktime(0, 0, 0, $tempArr[1], $tempArr[0], $tempArr[2]));
$expiration_date = strtotime($exp_date);

echo $expiration_date.' | '.$today.'<br>';

if($expiration_date > $today){ 
    echo 'Still Active';
} else { 
    echo 'Time Expired';
}
于 2013-03-13T07:27:34.807 回答