<?php
$enddate = explode("-", $navinfor[enddate]);    //enddate为字段名。
$newstime = explode("-", $navinfor[newstime]);  // 发布时间,格式为:Y-m-d H:i:s
$lt = mktime(0,0,0,$enddate[1], $enddate[2], $enddate[0]); 
$st = mktime(0,0,0,$newstime[1], $newstime[2], $newstime[0]); 
$overtime=$lt - $st;
$days=$overtime /86400;
if($days<0)
{
echo "此信息已过期"; //建议可换成图片形式
}
else 
{
echo "此信息还剩 <b><font color=red>".$days."</font></b> 天";  // CSS自定
}
?>上面这段代码一运行,出现了这样的结果: 此信息还剩 14810.6666667 天 请教高手,是哪里出错了。

解决方案 »

  1.   

    $navinfor[enddate]和$navinfor[newstime]的值打印出来看看先。
      

  2.   

    $newstime = explode("-", $navinfor[newstime]); // 发布时间,格式为:Y-m-d H:i:s截取的时间段有问题
    应该是:$navinfor[newstime] = substr($navinfor[newstime],0,10);//取得Y-m-d然后再获得:$newstime = explode("-", $navinfor[newstime]); // 发布时间,格式为:Y-m-d同理,过期时间也是
      

  3.   

    Y-m-d H:i:s这个用explode("-", $navinfor[newstime])的时候最后一个值是d H:i:s这个样是不行的。用下面的$newstime = date_parse($navinfor[newstime]);
    mktime(0,0,0,$newstime[month], $newstime[day], $newstime[year]);
      

  4.   

    你格式是 Y-m-d H:i:s
    explode("-", $navinfor[newstime]); 出来的 $newstime[2]并不是你预想的【day】
      

  5.   

    strtotime("2010-01-12 12:12:12");//这函数直接取时间戳
      

  6.   

    4楼的用到了date_parse函数,更好些,呵呵