龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

php 获取一年内的星期列表及每周起始时间

时间:2014-08-15 02:13来源:网络整理 作者:网络 点击:
分享到:
获取一年内的星期列表及每周起始时间 我在网上找了半天,找到的都是不能用的,没辙就自己写了一个。别跟我讨论是不是最优算法,多几个CPU时钟周期,死不了。[代码片段(40行)]

我在网上找了半天,找到的都是不能用的,没辙就自己写了一个。

别跟我讨论是不是最优算法,多几个CPU时钟周期,死不了。

public static function getWeeks($format="second",$year=null){
    if($year == null){
        $year=date('Y');
    }
    $second_of_day = 24*3600;
    $year_start = $year . "-01-01 00:00:00"; 
    $year_end = $year . "-12-31 23:59:59"; 
    $startday = strtotime($year_start); 
    $day_of_week = date('N', $startday);
    $first_week_start=$startday;
    $first_week_end = $startday+(7-$day_of_week)*$second_of_day+$second_of_day-1;
    $week_array[0]=array($first_week_start,$first_week_end);

    $endday = strtotime($year_end); 
    $day_of_week = date('N', $endday);

    $last_week_start=$endday-$day_of_week*$second_of_day+1;
    $last_week_end = $endday;
    $last_week=array($last_week_start,$last_week_end);

    $during = $last_week_start - $first_week_end;

    $during_total_week = intval($during/(7*$second_of_day));

    for($i=0;$i<$during_total_week;$i++){
        $week_array[$i+1]=array($first_week_end+(7*$i*$second_of_day)+1,$first_week_end+(($i+1)*$second_of_day*7));
    }

    $week_array[$during_total_week+1]=$last_week;

    if($format !="second"){
        foreach($week_array as $i => $week){
            $week_array_of_date_format[$i]=array(date($format,$week[0]),date($format,$week[1]));
        }
        return $week_array_of_date_format;
    }

    return $week_array;
}
//该片段来自于http://outofmemory.cn
精彩图集

赞助商链接