我在下面的脚本上遇到了一个问题,假设从db中检索到$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';
}
任何人都可以提供帮助吗?
答案 0 :(得分:10)
这是工作代码
<?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'格式
希望它可以帮到你。答案 1 :(得分:5)
关于strtotime()
手册的说明。
m/d/y
或d-m-y
格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠(/),然后假设美国m / d / y;而如果分隔符是破折号( - )或点(。),则假定为欧洲d-m-y格式。为避免潜在的歧义,最好在可能的情况下使用ISO 8601(YYYY-MM-DD)日期或
DateTime::createFromFormat()
。
答案 2 :(得分:0)
你可以在mysql本身中完成,如下所示:
select if(cur_date()>expire_date,'expire','active') as status from tableName
答案 3 :(得分:0)
<?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';
}
?>
答案 4 :(得分:-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';
}