php获取近n周的开始、结束时间,每周开始、结束日期、年周列表。
/**
* 获取近n周开始、结束时间,每周开始、结束日期、年月列表。
* @param int $n
* @return array|bool
*/
public static function getLastNWeeks(int $n){
if($n <= 0){
return false;
}
$n++;
$result = ['start_time'=>strtotime("-{$n} week Monday"),'end_time'=>strtotime("-1 week Sunday"),'list'=>[]];
$day = date("l");
for($i=$n;$i>1;$i--){
$last = $i - 1;
if($day == 'Monday'){
//周一的时候获取上一周的周一即可
$weekStartTime = strtotime("-{$last} week Monday");
}else{
$weekStartTime = strtotime("-{$i} week Monday");
}
$result['list'][date('YW',$weekStartTime)] = [
'startDate'=>date('m-d',$weekStartTime),
'endDate'=>date('m-d',strtotime("-{$last} week Sunday")),
'yearWeek'=>date('YW',$weekStartTime)
];
}
return $result;
}
返回格式:
[
"start_time" => 1643558400,
"end_time" => 1648915200,
"list" => [
202205 => [
"startDate" => "01-31",
"endDate" => "02-06",
"yearWeek" => "202205",
],
202206 => [
"startDate" => "02-07",
"endDate" => "02-13",
"yearWeek" => "202206",
],
202207 => [
"startDate" => "02-14",
"endDate" => "02-20",
"yearWeek" => "202207",
],
202208 => [
"startDate" => "02-21",
"endDate" => "02-27",
"yearWeek" => "202208",
],
202209 => [
"startDate" => "02-28",
"endDate" => "03-06",
"yearWeek" => "202209",
],
202210 => [
"startDate" => "03-07",
"endDate" => "03-13",
"yearWeek" => "202210",
],
202211 => [
"startDate" => "03-14",
"endDate" => "03-20",
"yearWeek" => "202211",
],
202212 => [
"startDate" => "03-21",
"endDate" => "03-27",
"yearWeek" => "202212",
],
202213 => [
"startDate" => "03-28",
"endDate" => "04-03",
"yearWeek" => "202213",
],
],
]
分享不易,点赞关注给作者一点点鼓励🤓🤓,谢谢您!