date(w) 周日为一周的第一天时间问题

签到打卡中,如果周日是第一天,则会在周日当天时,定位本周日期,会跳转至少下一周,不复合中国人周一是一周的第1天的习惯。


小写'w'表示取这天在一星期中的第几天,以数字表示,0(表示星期天)到 6(表示星期六)
大写'W'表示取这天在一年中的第几周,以数字表示,每周从星期一开始。例如:42(当年的第 42 周)


懒得写判断了,时间紧,资源一样,使用代码长度换取运行速度

//日期计算 自动获取当前日期前后七天的号
public function dateAction()
{
    //date("t") 当月的天数; date("y") 当前的年数 ;date("m") 当前的月数;date("d") 当前几号
    $time = '';
    $format='d';
    $time = $time != '' ? $time : time();
    //获取当前周几
    $week = date('w',$time);
    switch ($week){
        case 0 :
            return $this->dateNumber=[
                (int)date($format,strtotime("-6 day")),
                (int)date($format,strtotime("-5 day")),
                (int)date($format,strtotime("-4 day")),
                (int)date($format,strtotime("-3 day")),
                (int)date($format,strtotime("-2 day")),
                (int)date($format,strtotime("-1 day")),
                (int)date($format,$time),
                //(int)date($format ,strtotime( '+' . $i-$week .' days', $time))
            ];
            break;
        case 1 :
            return $this->dateNumber=[
                (int)date($format,$time),
                (int)date($format,strtotime("+1 day")),
                (int)date($format,strtotime("+2 day")),
                (int)date($format,strtotime("+3 day")),
                (int)date($format,strtotime("+4 day")),
                (int)date($format,strtotime("+5 day")),
                (int)date($format,strtotime("+6 day")),
            ];
            break;
        case 2 :
            return $this->dateNumber=[
                (int)date($format,strtotime("-1 day")),
                (int)date($format,$time),
                (int)date($format,strtotime("+1 day")),
                (int)date($format,strtotime("+2 day")),
                (int)date($format,strtotime("+3 day")),
                (int)date($format,strtotime("+4 day")),
                (int)date($format,strtotime("+5 day")),
            ];
            break;
        case 3 :
            return $this->dateNumber=[
                (int)date($format,strtotime("-2 day")),
                (int)date($format,strtotime("-1 day")),
                (int)date($format,$time),
                (int)date($format,strtotime("+1 day")),
                (int)date($format,strtotime("+2 day")),
                (int)date($format,strtotime("+3 day")),
                (int)date($format,strtotime("+4 day")),
            ];
            break;
        case 4 :
            return $this->dateNumber=[
                (int)date($format,strtotime("-3 day")),
                (int)date($format,strtotime("-2 day")),
                (int)date($format,strtotime("-1 day")),
                (int)date($format,$time),
                (int)date($format,strtotime("+1 day")),
                (int)date($format,strtotime("+2 day")),
                (int)date($format,strtotime("+3 day")),
            ];
            break;
        case 5 :
            return $this->dateNumber=[
                (int)date($format,strtotime("-4 day")),
                (int)date($format,strtotime("-3 day")),
                (int)date($format,strtotime("-2 day")),
                (int)date($format,strtotime("-1 day")),
                (int)date($format,$time),
                (int)date($format,strtotime("+1 day")),
                (int)date($format,strtotime("+2 day")),
            ];
            break;
        case 6 :
            return $this->dateNumber=[
                (int)date($format,strtotime("-5 day")),
                (int)date($format,strtotime("-4 day")),
                (int)date($format,strtotime("-3 day")),
                (int)date($format,strtotime("-2 day")),
                (int)date($format,strtotime("-1 day")),
                (int)date($format,$time),
                (int)date($format,strtotime("+1 day")),
            ];
            break;
    }
    return $this->dateNumber;
}