【问题标题】: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'),
                        ];
                    }
                }    
            } 

【问题讨论】:

标签: php laravel datetime


【解决方案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://stackoverflow.com/a/3207849/4028570。

【讨论】:

  • 周末将是动态的,它将来自数据库。
  • 那么您只需要根据您的数据库查询设置 $begin 和 $end 变量。您也可以将该代码放入以 $begin 和 $end 作为参数的函数中,并在需要时调用它。
猜你喜欢
  • 2011-03-22
  • 2015-10-29
  • 2014-09-17
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-08
  • 1970-01-01
相关资源
最近更新 更多