/*
* 获取以星期天为一周的开始,计算年周
* liuyinggui
* 2021-05-11
* 接收:年月日
* 返回:周数
* */
function get_sunday_week($date) {
//年份
y
e
a
r
=
d
a
t
e
(
′
Y
′
,
s
t
r
t
o
t
i
m
e
(
year = date('Y',strtotime(
year=date(′Y′,strtotime(date));
//年的第一天
$year_start = $year . “-01-01 00:00:00”;
//年的最后一天
$year_end = $year . “-12-31 23:59:59”;
//转换年第一天为秒
s
t
a
r
t
d
a
y
=
s
t
r
t
o
t
i
m
e
(
startday = strtotime(
startday=strtotime(year_start);
//如果第一天不是星期天
if (intval(date(‘N’, $startday)) != ‘7’) {
//以星期天开始,可自定义周开始时间,只需更换:一下星期单词
s
t
a
r
t
d
a
y
=
s
t
r
t
o
t
i
m
e
(
"
n
e
x
t
S
u
n
d
a
y
"
,
s
t
r
t
o
t
i
m
e
(
startday = strtotime("next Sunday", strtotime(
startday=strtotime("nextSunday",strtotime(year_start)); //获取年第二周的开始日期
}else{
//是否开始日期就是年周的第一周开始日期
$is_first = true;
}
$year_mondy = date(“Y-m-d”, $startday); //获取年第二周的开始日期
//年的最后一天
e
n
d
d
a
y
=
s
t
r
t
o
t
i
m
e
(
endday = strtotime(
endday=strtotime(year_end);
//如果1月1日,不是年的第一周开始时间,年的最后一天 - 第二周开始时间,反之年的最后一天 - 1月1日
y
e
a
r
d
a
y
s
=
i
n
t
v
a
l
(
c
e
i
l
(
(
year_days = intval(ceil((
yeardays=intval(ceil((endday - $startday)/86400));
//最后一周还剩几天
$end_days = $year_days%7;
//一年有几周
w
e
e
k
s
=
f
l
o
o
r
(
weeks = floor(
weeks=floor(year_days/7);
//一年有多少周,周的开始时间与结束时间,键值为周数
w
e
e
k
a
r
r
a
y
=
a
r
r
a
y
(
)
;
/
/
如
果
第
一
天
不
是
年
的
第
一
周
开
始
时
间
i
f
(
!
week_array = array(); //如果第一天不是年的第一周开始时间 if (!
weekarray=array();//如果第一天不是年的第一周开始时间if(!is_first){
w
e
e
k
a
r
r
a
y
[
1
]
=
a
r
r
a
y
(
week_array[1] = array(
weekarray[1]=array(year_start,date(‘Y-m-d’,strtotime(’-1 day’,$startday)).’ 23:59:59’);
}
//判断年的最后一天是不是周的最后一天
if (intval(date(‘w’, $endday)) != ‘6’) {
//以星期六结束,与上面关联,结束日期为开始日期的前一天
e
n
d
d
a
y
=
s
t
r
t
o
t
i
m
e
(
"
l
a
s
t
S
a
t
u
r
d
a
y
"
,
s
t
r
t
o
t
i
m
e
(
endday = strtotime("last Saturday", strtotime(
endday=strtotime("lastSaturday",strtotime(year_end));
}else{
KaTeX parse error: Expected 'EOF', got '}' at position 24: … true; }̲ //此循环为…i = 1; $i <= $weeks; $i++) {
$j = $i -1;
//周的开始日期
s
t
a
r
t
d
a
t
e
=
d
a
t
e
(
"
Y
−
m
−
d
"
,
s
t
r
t
o
t
i
m
e
(
"
start_date = date("Y-m-d", strtotime("
startdate=date("Y−m−d",strtotime("year_mondy $j week “));
//周的结束日期
e
n
d
d
a
y
=
d
a
t
e
(
"
Y
−
m
−
d
"
,
s
t
r
t
o
t
i
m
e
(
"
end_day = date("Y-m-d", strtotime("
endday=date("Y−m−d",strtotime("start_date +6 day”));
if ($is_first && $i==1){
$week_array[1] = array ($start_date.' 00:00:00', $end_day.' 23:59:59');
}else{
$week_array[] = array ($start_date.' 00:00:00', $end_day.' 23:59:59');
}
}
if (!$is_end){
$week_array[] = array(date('Y-m-d',strtotime('+1 day',$endday)).' 00:00:00',date('Y-m-d',strtotime("+$end_days day",$endday)).' 23:59:59');
}
//判断属于哪一周
foreach ($week_array as $key => $val){
if (strtotime($date) >= strtotime($val[0]) && strtotime($date) <= strtotime($val[1])){
$now_week = $key;
break;
}
}
return $now_week;
}