统计一个月中的所有周开始和结束日期

function getWeekStartAndEnd($firstday, $lastday, $first = 1)
    {
        //当前日期
        if (!$firstday) $firstday = date("Y-m-d", time());
        //$first =1 表示每周星期一为开始日期 0表示每周日为开始日期

        $weeks = [];
        while ($firstday < $lastday){
            //获取当前周的第几天 周日是 0 周一到周六是 1 - 6
            $w = date('w', strtotime($firstday));
            //获取本周开始日期,如果$w是0,则表示周日,减去 6 天
            $week_start = date('Y-m-d', strtotime("$firstday -" . ($w ? $w - $first : 6) . ' days'));
            //本周结束日期
            $week_end = date('Y-m-d', strtotime("$week_start +6 days"));
            $weeks[] = [
                'week_start' => $week_start,
                'week_end'  => $week_end
            ];
            $firstday = date('Y-m-d', strtotime("$firstday +7 day"));
        }

        //最后日期如跨月,销毁
        $lastArr = count($weeks);
        if ($weeks[$lastArr-1]['week_end'] > $lastday) {
            unset($weeks[$lastArr-1]);
        }
        return $weeks;
    }

执行结果

Array
(
[0] => Array
(
[week_start] => 2021-03-29
[week_end] => 2021-04-04
)

[1] => Array
(
[week_start] => 2021-04-05
[week_end] => 2021-04-11
)

[2] => Array
(
[week_start] => 2021-04-12
[week_end] => 2021-04-18
)

[3] => Array
(
[week_start] => 2021-04-19
[week_end] => 2021-04-25
)

)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值