php strtotime does not work



我在下面的脚本中遇到了一个问题,假设$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';
}

相关内容

  • 没有找到相关文章

最新更新