如题,如起始日期是:2007-10-01 00:00:00
截止日期到系统当天日期为止请教各位 怎么统计出期间有几个季度并自动从生成从起始日期到现在的季度下拉列表呢?
想实现的就如:
以下下拉列表方式:
<select name="select" id="select">
    <option selected="selected">请选择</option>
    <option value="2009-01-01 00:00:00">2009年第1季度</option>
    <option value="2009-04-01 00:00:00">2009年第2季度</option>
    <option value="2009-07-01 00:00:00">2009年第3季度</option>
    <option value="2009-10-01 00:00:00">2009年第4季度</option>
    <option value="2010-01-01 00:00:00">2010年第1季度</option>
    <option value="2010-04-01 00:00:00">2010年第2季度</option>
</select>
以下是获取今天的是第几季度
function MyDate($format='Y-m-d H:i:s',$timest=0)
{
$cfg_cli_time = 8;
global $cfg_cli_time;
$addtime = $cfg_cli_time * 3600;
if(empty($format))
{
$format = 'Y-m-d H:i:s';
}
return gmdate ($format,$timest+$addtime);
}

function GetMkTime($dtime)
{
$cfg_cli_time = 8;
global $cfg_cli_time;
if(!ereg("[^0-9]",$dtime))
{
return $dtime;
}
$dtime = trim($dtime);
$dt = Array(1970,1,1,0,0,0);
$dtime = ereg_replace("[\r\n\t]|日|秒"," ",$dtime);
$dtime = str_replace("年","-",$dtime);
$dtime = str_replace("月","-",$dtime);
$dtime = str_replace("时",":",$dtime);
$dtime = str_replace("分",":",$dtime);
$dtime = trim(ereg_replace("[ ]{1,}"," ",$dtime));
$ds = explode(" ",$dtime);
$ymd = explode("-",$ds[0]);
if(!isset($ymd[1]))
{
$ymd = explode(".",$ds[0]);
}
if(isset($ymd[0]))
{
$dt[0] = $ymd[0];
}
if(isset($ymd[1]))
{
$dt[1] = $ymd[1];
}
if(isset($ymd[2]))
{
$dt[2] = $ymd[2];
}
if(strlen($dt[0])==2)
{
$dt[0] = '20'.$dt[0];
}
if(isset($ds[1]))
{
$hms = explode(":",$ds[1]);
if(isset($hms[0]))
{
$dt[3] = $hms[0];
}
if(isset($hms[1]))
{
$dt[4] = $hms[1];
}
if(isset($hms[2]))
{
$dt[5] = $hms[2];
}
}
foreach($dt as $k=>$v)
{
$v = ereg_replace("^0{1,}",'',trim($v));
if($v=='')
{
$dt[$k] = 0;
}
}
$mt = @gmmktime($dt[3],$dt[4],$dt[5],$dt[1],$dt[2],$dt[0]) - 3600 * $cfg_cli_time;
if(!empty($mt))
{
return $mt;
}
else
{
return time();
}
}

$y = intval(MyDate('Y', time()));
$m = intval(MyDate('m', time()));
$d = intval(MyDate('d', time()));

//季度
$endtime = 0;
if( ereg("[123]", $m) && $m < 10) $endtime = $y."-01-01 00:00:00";
else if( ereg("[456]", $m) ) $endtime = $y."-04-01 00:00:00";
else if( ereg("[789]", $m) ) $endtime = $y."-07-01 00:00:00";
else  $endtime = $y."-10-01 00:00:00";
$endtime = GetMkTime($endtime);

echo $endtime;

解决方案 »

  1.   

    <?php 
    function countSeason($start,$end){
        $temp = date("Y-m-d H:i:s",strtotime("$start +3month"));
        while ($temp <= $end){
            $time[] = $temp;
            $temp = date("Y-m-d H:i:s",strtotime("$temp +3month"));
        }
        return $time;
    }
    $time = countSeason("2007-10-01 00:00:00",date("Y-m-d H:i:s"));
    var_dump($time);
    echo "---------------------------------------------------------------------------------<br>";
    ?><html>
    <select name="select" id="select">
    <?php foreach ($time as $val){?>
    <option value="<?php echo $val;?>"><?php echo substr($val,0,4);?>年第
    <?php 
    $temp = intval(substr($val,5,2));
    if (0<$temp&&$temp<4)
    {echo "1";}
    elseif (3<$temp&&$temp<7)
    {echo "2";}
    elseif (6<$temp&&$temp<10)
    {echo "3";}
    else
    {echo "4";}
    ?>季度
    </option>
    <?php }?>
    </select>
    </html>
      

  2.   

    感谢 bing19870624 问题已解决,再次感谢