如何在没有周末的情况下获取日期范围之间的所有日期?

Posted

技术标签:

【中文标题】如何在没有周末的情况下获取日期范围之间的所有日期?【英文标题】:How can i get all dates between date range without weekends? 【发布时间】:2018-12-07 09:51:39 【问题描述】:

我希望日期范围内的所有日期,但我也想排除周五和周六等范围内的周末。但我希望周末是动态的,意味着它可以是其他任何一天。

for($date = $fromdate; $date->lte($todate); $date->addDay())
             
                foreach($allweekends as $weekend)
                
                    if($date->format('l')!=$weekend->weekendDay )
                    
                        $daterange[]=[

                            'date'=>$date->format('Y-m-d'),
                            'day'=>$date->format('l'),
                        ];
                    
                    
             

【问题讨论】:

请阅读How to Ask和minimal reproducible example,并相应地编辑您的问题。 I have 2 dates in php, how can I run a foreach loop to go through all of those days?的可能重复 【参考方案1】:

这应该可以满足您的需要:

<?php

$begin = new DateTime('2018-06-28');
$end = new DateTime('2018-07-02');

for($date = $begin; $date <= $end; $date->modify('+1 day'))
    if (date('N', strtotime($date->format('Y-m-d'))) < 6) 
        $daterange[]=[
            'date'=>$date->format('Y-m-d'),
            'day'=>$date->format('l'),
        ];
    

var_dump($daterange);

?>

改编自这个答案https://***.com/a/3207849/4028570。

【讨论】:

周末将是动态的,它将来自数据库。 那么您只需要根据您的数据库查询设置 $begin 和 $end 变量。您也可以将该代码放入以 $begin 和 $end 作为参数的函数中,并在需要时调用它。

以上是关于如何在没有周末的情况下获取日期范围之间的所有日期?的主要内容,如果未能解决你的问题,请参考以下文章

下拉/自动填充日期列表,但只有工作日,而不是周末 - excel

获取日期范围与列中最小日期之间的所有行

Impala 获得 2 个日期之间的差异,不包括周末

获取两个日期之间的天数,不包括周末

MySQL在不使用表列的情况下选择两列之间的范围日期

如何在当前日期和当前日期 + 2 之间提取数据但不包括周末?