PHP根据月份获取周一-周日日期范围数据

此为工作笔记。

需求背景:每个月的1号不可能都是从周一开始,因此需要截取上月的最后几天;相对的每个月的最后一天也不可能就是周日,因此需要获取下月的前几天。

以2022-07月为例,需要获取的日期范围数据为:2022-06-27 -- 2022-07-31

 

/**
 * 获取周一-周日月度数据
 * @param string $month 月份,格式:2022-12
 * @return array 全部的日期list
 */
function getNatureMonthDays($month)
{
    $week_keys = [1, 2, 3, 4, 5, 6, 0];
    $sdate = $month . '-01';
    $sdate_week = date('w', strtotime($sdate));
    $edate = date('Y-m-t', strtotime($sdate));
    $edate_week = date('w', strtotime($edate));

    $sdate_search = array_search($sdate_week, $week_keys);
    $edate_search = array_search($edate_week, $week_keys);
    if ($sdate_search != 0) {
        $sdate = date('Y-m-d', strtotime("-{$sdate_search} day", strtotime($sdate)));
    }
    if ($edate_search != 6) {
        $edate_search_diff = 6 - $edate_search;
        $edate = date('Y-m-d', strtotime("+{$edate_search_diff} day", strtotime($edate)));
    }
    $dt_start = strtotime($sdate);
    $dt_end = strtotime($edate);
    $days[] = date('Y-m-d', $dt_start);
    while ($dt_start < $dt_end) {
        $dt_start = strtotime('+1 day', $dt_start);
        $days[] = date('Y-m-d', $dt_start);
    }
    return $days;
}

$month = '2022-07';
var_dump(getNatureMonthDays($month));

返回示例:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值