如题

解决方案 »

  1.   


    //季度第一天:参数:$day格式为yyyy-mm-dd
    function quarterFirstDay($day)
    {
    $_day = getdate(strtotime($day));
    $_thism = ceil($_day[mon]/3);
    return $_day[year].'-'.$_thism.'-1';
    }//本月第一天:参数:$day格式为yyyy-mm-dd
    function monFirstDay($day)
    {
    $_day = getdate(strtotime($day));
    return $_day[year].'-'.$_day[mon].'-1';
    }//本周第一天:参数:$day格式为yyyy-mm-dd
    function weekFirstDay($day)
    {
    $__day = strtotime($day);
    $_day = getdate($__day);
    $_thisw = (7-$_day[wday])*3600*24;
    return date("Y-m-d",$__day - $_thisw);
    }
      

  2.   

    <?php
    echo '本季度第一天:'.date('Y-m-d', mktime(0,0,0,date('n')-(date('n')-1)%3,1,date('Y'))).'<br/>';
    echo '本月第一天:'.date('Y-m-d', mktime(0,0,0,date('n'),1,date('Y'))).'<br/>';
    echo '本周第一天(星期日为一周开始):'.date('Y-m-d', time()-86400*date('w')).'<br/>';
    echo '本周第一天(星期一为一周开始):'.date('Y-m-d', time()-86400*date('w')+(date('w')>0?86400:-6*86400)).'<br/>';
    ?>
      

  3.   

    季度第一天,还是月份第一天,都是某个年月日期(比如2009-03),拼接上"-01"即可.
    至于周的第一天,可以利用某个日期是星期几来算出.
    比如'2009-05-20'是星期2,那这个日期再减一天就是星期一,也就是所谓周的开始天.'2009-05-21'是星期3,那就减2天,以此类推.
    //
    date_default_timezone_get('Asia/shanghai');
    function weekFirstDay($day)
    {
    $dt = strtotime($day);
    $wd = date('w',$dt)-1;//周一为开始天
    //$wd = date('N',$dt);//周日为开始天
    return date('Y-m-d',strtotime($day." - {$wd} days"));
    }echo weekFirstDay('2009-05-20');
      

  4.   

    以上有bug..
    $wd = date('N',$dt)-1;//用这个,周一开始天
      

  5.   

    <?php
    $time = time();function gettime( $time, $str )
    {
       if( $str == 1 )
       {
           $w = date( 'w', $time );
       
       if( $w < 1 )
       {
           $time = $time + 24*3600;
       }
       elseif( $w > 1 )
       {
           $time = $time - ( $w - 1 )*24*3600;
       }
       
        return $w.date( 'Y-m-d', $time );
       }
       elseif( $str == 2 )
       {
           $j = date( 'j', $time );
       
       $time = $time - ( $j - 1 )*24*3600;
       
       return date( 'Y-m-d', $time );
       }
       elseif( $str == 3 )
       {
           $m = date( 'm', $time );
       
       if( 0 < $m && $m < 4 )
       {
           return date('Y', $time)."-01-01";
       }
       elseif( 3 < $m && $m < 7 )
       {
           return date('Y', $time)."-04-01";
       }
       elseif( 6 < $m && $m < 10 )
       {
           return date('Y', $time)."-07-01";
       }
       elseif( 9 < $m && $m < 12 )
       {
           return date('Y', $time)."-09-01";
       }
       }
    }echo gettime( $time, 1 );  // 星期 一 echo "<br>";echo gettime( $time, 2 );  // 月 一echo "<br>";echo gettime( $time, 3 );  // 季 一
    ?>
      

  6.   

    这个函数有个地方修改一下。不用7-直接乘就可以了//本周第一天:参数:$day格式为yyyy-mm-dd
    function weekFirstDay($day)
    {
    $__day = strtotime($day);
    $_day = getdate($__day);
    $_thisw = $_day[wday]*3600*24;
    return date("Y-m-d",$__day - $_thisw);
    }