/**
* 当前日期的上一周的开始时间,结束时间和上一个月的开始时间和结束时间及时间戳
* @param string $date
* @return array|string
*/
function week_of_month($date = ''){
date_default_timezone_set('Asia/Shanghai');
$date = empty($date) ? date('Y-m-d') : $date;//当前日期
$now_time=strtotime($date);//当前时间戳
$wk_day = date('w', $now_time) ?: 7; //今天周几
$monday_time = ($now_time - ($wk_day - 1) * 86400);//本周一对应时间戳
$week_last_day = date('Ymd',$monday_time-86400);//统计时间
$week_end_time=strtotime($week_last_day);//当前时间戳
$wk_day = date('w', $week_end_time) ?: 7; //今天周几
$monday_time = ($week_end_time - ($wk_day - 1) * 86400);//本周一对应时间戳
$first_monday = strtotime("first Monday", strtotime(date('Y-m-01',$monday_time)) - 1);//所在月份第1个周一0点的时间戳
// print_r($first_monday);exit;
$week_number = intval(($monday_time - $first_monday) / 86400 / 7) + 1;//得出第几周(从0开始所以要加1)
// print_r(strtotime($date));exit;
$year_month_week=date('Y', $monday_time).date('m', $monday_time).$week_number;// 上周是几月第几周
$week_first_day = date('Ymd',$monday_time);//上一周开始时间
$month_first_day=date('Ym01',strtotime("$date -1 month"));
$month_last_day=date('Ymd',strtotime("$month_first_day +1 month -1 day"));
$month_star_time=strtotime("$month_first_day");
$month_end_time=strtotime("$month_first_day +1 month -1 day")+86399;
return [
'now_date'=>$date,// 当天时间 2020-12-19
'year_month_week' => $year_month_week,// 哪年哪月第几周 2020-12-1
'week_first_day'=>$week_first_day,// 上周第一天
'week_last_day'=>$week_last_day,// 上周最后一天
'week_star_time'=>$monday_time,// 上周开始时间戳
'week_end_time'=>($week_end_time+86399),// 上周结束时间戳
'week_statistical_time'=>date('Y-m-d H:i',($week_end_time+86399)),
'month_first_day'=>$month_first_day,// 上月第一天
'month_last_day'=>$month_last_day,// 上月最后一天
'month_star_time'=>$month_star_time,// 上月开始时间戳
'month_end_time'=>$month_end_time,// 上月结束时间戳
'month_statistical_time'=>date('Y-m-d H:i',$month_end_time),
];
}