date('z',mktime(0,0,0,1,1,2008))=1date('z',mktime(0,0,0,2,1,2008))=32date('z',mktime(0,0,0,3,1,2008))=61

解决方案 »

  1.   

    function getDayCount($month, $day,$year){ //最好要加上year    $daycount=date('z',mktime(0,0,0,$month,$day,$year))    
        return $dayCount;
    }
      

  2.   

    date('z',UNIX 时间戳记);小写z表示今天是本年中第几天;
      

  3.   


    function getDayCount($month, $day){ 
        $strDay = sprintf('%d-%d-%d', date("Y"), $month, $day);
        return date('z', strtotime($strDay)) + 1;
    }
      

  4.   


    strtotime -- 将任何英文文本的日期时间描述解析为 Unix 时间戳不用考虑闰年的问题吧!?不知道后面加1是什么意思
      

  5.   

    echo date('z',mktime(0,0,0,1,1,2008));
    这返回0,你没有测试过你的程序吗?呵呵.
      

  6.   

    至于效率问题,
    strtotime比mktime要差一些,10000次差个0.28秒吧,呵呵.
    但两者所处理的范围不一样,
    strtotime能处理很多种时间串,具体可查看手册.
    mktime必须传递年月日时分秒的参数.如果你参数都已经有了,哪当然mktime好些.
    如果你还需要分割时间串来构造它的参数,哪当然strtotime好些.各有各适合的地方吧.