php strtotime不起作用

时间:2013-03-13 07:22:12

标签: php date datetime strtotime

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

任何人都可以提供帮助吗?

5 个答案:

答案 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';
}