加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何获取给定月份中每周的日期间隔?

发布时间:2020-12-13 21:44:25 所属栏目:PHP教程 来源:网络整理
导读:有没有办法在一个月的 PHP中获取每周的日期开始/结束? 所以,例如,如果我这个月(2011年11月),我需要返回 30 Oct - 5 Nov 6 Nov - 12 Nov13 Nov - 19 Nov20 Nov - 26 Nov27 Nov - 3 Dec LE: 这是我所做的,以防其他人需要它.代码不漂亮但它可以正常工作. publ
有没有办法在一个月的 PHP中获取每周的日期开始/结束?
所以,例如,如果我这个月(2011年11月),我需要返回

30 Oct ->  5 Nov
 6 Nov -> 12 Nov
13 Nov -> 19 Nov
20 Nov -> 26 Nov
27 Nov ->  3 Dec

LE:

这是我所做的,以防其他人需要它.代码不漂亮但它可以正常工作.

public function getMonthWeeks($month,$year)
{
    $month = intval($month);

    if ($month < 1) {
        $month = 1;
    }

    if ($month > 12) {
        $month = 12;
    }

    $tsfdOfMonth = mktime(0,$month,1,$year);
    $dayOfWeek   = idate('w',$tsfdOfMonth);

    $tIntervalStart = $tsfdOfMonth;
    $tNextMonth     = idate('m',strtotime("+1 month",$tsfdOfMonth));

    if ($dayOfWeek > 0) {
        $tStr = sprintf("-%d %s",$dayOfWeek,$dayOfWeek == 1 ? 'day' : 'days'
        );
        $tIntervalStart = strtotime($tStr,$tsfdOfMonth);
    }

    $resultDates = array();

    $tsStart = $tIntervalStart;
    $tsEnd   = strtotime('+6 days',$tsStart);

    while (true) {
        $rObj = new stdClass;
        $rObj->LinkStr = sprintf("%s %s - %s %s",date('M',$tsStart),date('d',$tsEnd),$tsEnd)
        );
        $rObj->DateStart = date('Y-m-d',$tsStart);
        $rObj->DateEnd   = date('Y-m-d',$tsEnd);

        $resultDates[] = $rObj;

        if (idate('m',strtotime('+1 day',$tsEnd)) == $tNextMonth) {
            break;
        }

        $tsStart = strtotime('+1 day',$tsEnd);
        $tsEnd   = strtotime('+6 days',$tsStart);
    }

    return $resultDates;
}

解决方法

你必须写一个函数:

算法:

>获取每月第一周的某一天.
>减去到达星期日所需的天数 – 您现在拥有该月第一个“星期日”的日期(可能是上个月的上个星期日).
>再加上六天来确定那周的星期六.
>添加一天以确定下周的星期日.
>重复3和4,直到我们不再在当月

两个功能将非常有用:$saturdaytimestamp = strtotime(“6天”,$sundaytimestamp)和$dayofweek = idate(‘w’,$timestamp);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读