时间戳转换

/**
 * 当前日期的上一周的开始时间,结束时间和上一个月的开始时间和结束时间及时间戳
 * @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),
    ];
}