Php Laravel根据商店营业天数获取日期列表,在日期范围内

Php Laravel根据商店营业天数获取日期列表,在日期范围内,php,laravel,php-carbon,Php,Laravel,Php Carbon,我有一个表,运行小时,其中记录了一周中某一天(周一、周二、周三至周日)的7行数据。还有一个数据列,用户可以在其中设置真/假诊所是否在本周开放 我想生成一个从当前日期到年底的日期列表,以诊所开放的星期几为准。目前,以下是我的方法控制器代码,我得到以下错误: DateTime::modify():无法分析时间字符串(此 [{“日”:“星期一”},{“日”:“星期二”},{“日”:“星期三”},{“日”:“星期四”},{“日”:“星期五”}]) 在位置0(t):在数据库中找不到时区 我最近也用过类似的

我有一个表,运行小时,其中记录了一周中某一天(周一、周二、周三至周日)的7行数据。还有一个数据列,用户可以在其中设置真/假诊所是否在本周开放

我想生成一个从当前日期到年底的日期列表,以诊所开放的星期几为准。目前,以下是我的方法控制器代码,我得到以下错误:

DateTime::modify():无法分析时间字符串(此 [{“日”:“星期一”},{“日”:“星期二”},{“日”:“星期三”},{“日”:“星期四”},{“日”:“星期五”}]) 在位置0(t):在数据库中找不到时区


我最近也用过类似的东西,看看这个:

function-generateDateRange($start,$end){
$result=[]
$end==strottime($end);
$current==strottime($start);

而($current我已经根据我的工作时间细节和假期表成功地检索出了日期列表

下面是我对代码所做的更改

private function getHolidays()
    {
        $holidaysList = Holiday::where('clinic_id', '=', $_SESSION['clinic_ID'])->get();
        $holidayArray = json_decode($holidaysList, true);
        
        foreach($holidayArray as $holiday){
            //Convert each data from table to Y-m-d format to compare
            $holidays[] = date('Y-m-d', strtotime($holiday['date']));
            // $holidays[] = $holiday['date'];
        }
        return $holidays;
        
    }
    
    public function getWorkDayInRange($workday, $dateFrom, $dateTo)
    {
        $holidays = $this->getHolidays();
        $startDate = new DateTime($dateFrom);
        $endDate = new DateTime($dateTo);
        $interval = new DateInterval('P1D');
        $dateRange = new DatePeriod($startDate, $interval, $endDate);
        $results = [];
        foreach ($dateRange as $date) {
            $name = $date->format('l');
            if (in_array($name, $workday) && !in_array($date->format('Y-m-d'), $holidays)) {
                $results[] = $date->format('Y-m-d');
            }
        }
        return $results;

    }

您好,谢谢您的输入,我已经看了一下,但是它不符合我的需要,它将在clinic_open为真的情况下检查天值。是否有办法绕过$workday值?是否还要检查天名称?@YasinPatel yap也检查天名称,并填充日期
getWorkDayInRange($operatingDays,…
传递数组
getWorkDayInRange($workday
期望一个workday字符串
解析时间字符串失败)
错误消息向您显示传递的内容,因此现在显然有办法从数组中获取任何正确的日期。
private function getHolidays()
    {
        $holidaysList = Holiday::where('clinic_id', '=', $_SESSION['clinic_ID'])->get();
        $holidayArray = json_decode($holidaysList, true);
        
        foreach($holidayArray as $holiday){
            //Convert each data from table to Y-m-d format to compare
            $holidays[] = date('Y-m-d', strtotime($holiday['date']));
            // $holidays[] = $holiday['date'];
        }
        return $holidays;
        
    }
    
    public function getWorkDayInRange($workday, $dateFrom, $dateTo)
    {
        $holidays = $this->getHolidays();
        $startDate = new DateTime($dateFrom);
        $endDate = new DateTime($dateTo);
        $interval = new DateInterval('P1D');
        $dateRange = new DatePeriod($startDate, $interval, $endDate);
        $results = [];
        foreach ($dateRange as $date) {
            $name = $date->format('l');
            if (in_array($name, $workday) && !in_array($date->format('Y-m-d'), $holidays)) {
                $results[] = $date->format('Y-m-d');
            }
        }
        return $results;

    }