各位大大, 上次小弟曾发过几个帖子关于php时间问题。下面是几位大大给的代码。
$startdate=strtotime("$fdatevar");    //开始日期$enddate=strtotime("+3 months","$startdate");    //开始日期加上三个月$days=round(($enddate-$startdate)/3600/24);        //开始到结束一共有几天$date=strtotime(date("Y/m/d"));            //今天
$d=round(($date-$startdate)/3600/24);        //开始日期到今天一共有几天$daysleft=($days -$d);                     //今天到结束那天还剩多少天
上面是代码,完全可用。小弟想再改进一下,第一次运行以后得到剩余的天数后$daysleft(上面的代码),上面的代码以后再也不运行了。但是每过一天,$daysleft就会自动减少一天,请问如何写呀??着急中。。谢谢各位大大

解决方案 »

  1.   

    上面的代码以后再也不运行了。但是每过一天,$daysleft就会自动减少一天,
    *******************************************************************
    ? 什么意思
      

  2.   

    楼上的大大,意思是说 那些代码只运行一遍,得到剩余天数$daysleft后就不在运行了,然后$daysleft每过一天就减一。如何写呀??谢谢
      

  3.   

    就是第一次输入的时候运行,以后再不运行了,不是每天运行一次,主要的是$daysleft的值怎么每天减一呀??谢谢
      

  4.   

    if($_GET['ac']=='stop')
    exit();
    sleep(5);
    $name=time();
    $fp=fopen("$name.txt",'w');
    fwrite($fp,time());
    fclose($fp);
    $fp = fsockopen('localhost', 80, $errno, $errmsg);
    fputs($fp, "GET /test/time.php\r\n\r\n");
    fclose($fp);
      

  5.   

    楼上的大大,你给的代码对我来说太难了,
    就是mysql里面有个值$daysleft  ,这个值每天减一, 怎么写呀》???谢谢
      

  6.   

    date_default_timezone_set('PRC');
    function countDate($beginDate,$endDate)
    {
    $nowDate = date("Y-m-d");//今天的日期 $nowMk = strtotime($nowDate);//今天的时间戳
    $beginMK = strtotime($beginDate);//开始日期的时间戳
    $endMK = strtotime($endDate);//结束日期的时间戳
    $daysTobegin = ceil(abs(($nowMk-$beginMK)/24/3600));//今天距开始日期的天数
    $daysToend = ceil(abs(($endMK-$nowMk)/24/3600));//今天距结束日期的天数
    return $daysTobegin."|".$daysToend;
    }
    $beginDate = "2010-5-1";
    $endDate = "2010-10-31";
    $showDays = countDate($beginDate,$endDate);//每次该脚本运行时就调用此函数一次,故每天都会不同的
    $showDaysArr = explode("|",$showDays);
    echo "今天离2010上海世博会开幕还有:".$showDaysArr[0]."天<br>";//以2010年上海世博会为例
    echo "今天离2010上海世博会闭幕还有:".$showDaysArr[1]."天";
      

  7.   

    楼上的大大,非常感谢你的代码,1,打个比方,需要用户输入一个日期,输入之后自动根据输入的日期计算出三个月后是哪一天。
    2,然后用三个月后的那天减去输入的那天(不是输入当天的日期,是用户所输入的日期),得出三个月共有多少天(90天?91天?之类的)
    3,再算出当天的时间,用三个月后的时间减去当天的时间,就得到离三个月后结束的那天还剩下多少天。以上三步的代码在此,$startdate=strtotime("$fdatevar"); //开始日期$enddate=strtotime("+3 months","$startdate"); //开始日期加上三个月$days=round(($enddate-$startdate)/3600/24); //开始到结束一共有几天$date=strtotime(date("Y/m/d")); //今天
    $d=round(($date-$startdate)/3600/24); //开始日期到今天一共有几天$daysleft=($days -$d); //今天到结束那天还剩多少天$daysleft就是还剩下多少天到结束的日子。
    问题是我需要每过一天,$daysleft的值就减一。求教各位大大,是不是把上面那些代码每天运行一次$daysleft的值就会减一??
      

  8.   

    用户页面countdate.html,日期格式形如2010-5-1 (年-月-日),你可以写个正则验证来验证日期格式是否合法,比较简单的,我就不写了。
    <html>
    <form action="countdate.php" method="POST">
    beginDate:<input name="beginDate" type="text" value=''>
    <p>
    endDate:<input name="endDate" type="text" value = "">
    <input type="submit" value="submit">
    </form>
    </html>
    php处理页面,采用post方式传参,直接输出到浏览器
    <?php
    date_default_timezone_set("PRC");
    function countDate($beginDate,$endDate)
    {
    $nowMk = strtotime(date("Y-m-d"));//今天的时间戳
    $beginMK = strtotime($beginDate);//开始日期的时间戳
    $endMK = strtotime($endDate);//结束日期的时间戳
    $daysTobegin = ceil(abs(($nowMk-$beginMK)/24/3600));//今天距开始日期的天数
    $daysToend = ceil(abs(($endMK-$nowMk)/24/3600));//今天距结束日期的天数
    $alldays = ceil(abs(($endMK-$beginMK)/24/3600));//总天数
    return $daysTobegin."|".$daysToend."|".$alldays;
    }
    $showDays = countDate($_POST["beginDate"],$_POST["endDate"]);//每调用此函数一次,参数是post传进来的
    $showDaysArr = explode("|",$showDays);
    echo "总共有".$showDaysArr[2]."天<br>";
    echo "今天离".$_POST["beginDate"]."还有:".$showDaysArr[0]."天<br>";
    echo "今天离".$_POST["endDate"]."还有:".$showDaysArr[1]."天";
    ?>其实楼主的需求也完全可以用JS实现,不经过服务器处理。有时间可以再交流下。