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