laravel 如何使用CarbonPeriod创建from_date to to_date数组并匹配数组中是否存在另一个日期

xoefb8l8  于 2022-11-18  发布在  其他
关注(0)|答案(3)|浏览(87)

我有两个约会:$从= 2022年11月1日$至= 2022年11月5日
现在,我想创建一个如下的数组:$日期=['2022年11月1日','2022年11月2日','2022年11月3日','2022年11月4日','2022年11月5日']
现在检查“2022-11-03”是否存在于$date数组中。
已用途:$date = Carbon\CarbonPeriod::create($from, $to);

if(in_array('2022-11-03', $date)){
    echo "Got it";
}

#但还是不行

1zmg4dgp

1zmg4dgp1#

您只需检查CarbonPeriod是否包含您检查的日期:

$from = '2022-11-01';
$to = '2022-11-05';
$date = Carbon\CarbonPeriod::create($from, $to);
if ($date->contains('2022-11-03')) {
    echo 'Got it';
}
wqnecbli

wqnecbli2#

它被要求提供一个带有CarbonPeriod的解决方案。但是,如果你只想检查日期是否介于$from和$to之间,则between是更好的选择。

$from = "2022-11-01";
$to = "2022-11-05";
$check = "2022-11-03";
if(Carbon::parse($check)->between($from,$to)){
  echo $check.' is between '.$from.' and '.$to;
} else {
  echo $check.' is not between '.$from.' and '.$to;
}

Try Carbon
如果数据的格式都是yyyy-mm-dd,则简单的字符串比较就足够了。

$from = "2022-11-01";
$to = "2022-11-05";
$check = "2022-11-03";
if($from <= $check AND $check <= $to) {
  echo $check.' is between '.$from.' and '.$to;
} else {
  echo $check.' is not between '.$from.' and '.$to;
}

演示:https://3v4l.org/A1IBh

11dmarpk

11dmarpk3#

根据这个问题,可能是您没有使用parse方法来解析日期,所以这可能是问题所在。

$from = "2022-11-01";
        $to = "2022-11-05";
        $dates = CarbonPeriod::create(
            Carbon::parse($from),
            Carbon::parse($to),
        );
        $dateArray = [];
        foreach ($dates as $date) {
            $dateArray[] = $date->toDateString();
        }

这里,$dateArray为您提供了日期数组。
此外,if部分对于上述解决方案也能正常工作:

if(in_array('2022-11-03', $date)){
    echo "Got it";
}

相关问题