php计算一年多少周,同时计算出这一周的开始时间和结束时间(可选返回时间戳或日期)

浏览:6178 发布日期:2013/08/10 分类:技术分享 关键字: 日期时间
讨论贴在此 http://www.thinkphp.cn/topic/4466.html
经过和 @jiangws 和 @jecken 两位的精诚合作,初步研究出此方法。
分享如下:function getWeekStartAndEnd ($year,$week=1) {

    header("Content-type:text/html;charset=utf-8");
    date_default_timezone_set("Asia/Shanghai");

    $year = (int)$year;
    $week = (int)$week;

    //按给定的年份计算本年周总数
    $date = new DateTime;
    $date->setISODate($year, 53);
    $weeks = max($date->format("W"),52);

    //如果给定的周数大于周总数或小于等于0
    if($week>$weeks || $week<=0){
        return false;
    }

    //如果周数小于10
    if($week<10){
        $week = '0'.$week;
    }

    //当周起止时间戳
    $timestamp['start'] = strtotime($year.'W'.$week);
    $timestamp['end'] = strtotime('+1 week -1 day',$timestamp['start']);

    //当周起止日期
    $timeymd['start'] = date("Y-m-d",$timestamp['start']);
    $timeymd['end'] = date("Y-m-d",$timestamp['end']);
    
    //返回起始时间戳
    return $timestamp;

    //返回日期形式
    // return $timeymd;
}
使用方法:
将以上函数复制到Common/common.php文件中。
在需要调用的控制器中新建方法,比如:    public function calculateWeekAndEndTime(){
        //2013年第一周
        $week = getWeekStartAndEnd(2013);
        // //1978年第30周
        // $week = getWeekStartAndEnd(1978,30);
        // //1921年第52周
        // $week = getWeekStartAndEnd(1921,52);
        //1901年第51周--最小值
        // $week = getWeekStartAndEnd(1901,51);
        //2038年第2周--最大值
        // $week = getWeekStartAndEnd(2038,2);
        dump($week);
    }
返回:
最佳答案
评论( 相关
后面还有条评论,点击查看>>