PHP获取指定周数的开始和结束时间戳

通过date('oW')获取到周数,例如:201915,获取该周的开始和结束时间戳

PS:date('YW')有跨年问题,date('oW')不会,详情可以看官方文档

/**
 * 通过周数获取周的起止时间戳
 * @param int $year_week 周数,例如:201915
 * @return array
 * @author itfuncn
 */
function week_timestamp($year_week = 0){

    if (!is_numeric($year_week)) return ['start' => 0, 'end' => 0];
    if (strlen($year_week) != 6) return ['start' => 0, 'end' => 0];

    $year = substr($year_week, 0, 4);
    $week = substr($year_week, -2);

    $firstdayofyear=mktime(0,0,0,1,1,$year);
    $firstweekday=date('N',$firstdayofyear);
    $firstweenum=date('W',$firstdayofyear);
    if($firstweenum==1){
        $day=(1-($firstweekday-1))+7*($week-1);
        $startdate=date('Y-m-d',mktime(0,0,0,1,$day,$year));
        $enddate=date('Y-m-d',mktime(0,0,0,1,$day+6,$year));
    }else{
        $day=(9-$firstweekday)+7*($week-1);
        $startdate=date('Y-m-d',mktime(0,0,0,1,$day,$year));
        $enddate=date('Y-m-d',mktime(0,0,0,1,$day+6,$year));
    }

    return ['start' => strtotime($startdate), 'end' => strtotime($enddate) + 86400 - 1];
}

评论