我在下面的脚本中遇到了一个问题,假设$exp_date
是从db中检索的,我想比较到期日期与今天的日期,以检查会员资格是否仍然活着。
没有显示,但只有Time Expired
,代码有什么问题?
从db的过期列中检索到的数据被设置为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';
}
有谁能帮忙吗?
下面是工作代码
<?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'
希望对你有帮助。
strtotime()
手册说明
m/d/y
或d-m-y
格式中的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠(/),则假定为美式m/d/y;而如果分隔符是破折号(-)或点(.),则采用欧洲d-m-y格式。
为了避免潜在的歧义,最好使用ISO 8601 (YYYY-MM-DD)日期或
DateTime::createFromFormat()
。
<?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';
}
?>
你可以在mysql中这样做:
select if(cur_date()>expire_date,'expire','active') as status from tableName
试一下
$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';
}