通过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];
}