You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PHP Carbon判断事件日期区间是否落在指定范围内?

用PHP和Carbon判断事件日期区间是否与指定区间重叠

给定事件的起止日期和一个检查区间,要判断事件是否处于该检查范围内(即两者存在日期重叠),可以借助Carbon的日期比较方法快速实现。

核心逻辑

两个日期区间存在重叠的判定规则:事件的结束日期不早于检查区间的开始日期,且事件的开始日期不晚于检查区间的结束日期。反之,如果事件完全在检查区间之前(事件结束早于区间开始)或完全在之后(事件开始晚于区间结束),则无重叠。

代码实现

use Carbon\Carbon;

// 定义日期字符串
$eventStart = '2023-04-01';
$eventEnd = '2023-09-14';
$rangeStart = '2023-07-01';
$rangeEnd = '2023-07-31';

// 转换为Carbon日期实例
$eventStartCarbon = Carbon::parse($eventStart);
$eventEndCarbon = Carbon::parse($eventEnd);
$rangeStartCarbon = Carbon::parse($rangeStart);
$rangeEndCarbon = Carbon::parse($rangeEnd);

// 判断是否存在重叠(即事件处于检查范围内)
$isInRange = !$eventEndCarbon->lt($rangeStartCarbon) && !$eventStartCarbon->gt($rangeEndCarbon);

// 输出结果
var_dump($isInRange); // 示例场景下返回 bool(true)

方法说明

  • lt():Carbon实例的less than方法,判断当前日期是否早于目标日期
  • gt():Carbon实例的greater than方法,判断当前日期是否晚于目标日期

额外场景:判断事件完全落在区间内

如果需要严格判定事件的起止日期都在检查区间内(而非部分重叠),可以修改判断条件:

$isFullyInRange = $eventStartCarbon->gte($rangeStartCarbon) && $eventEndCarbon->lte($rangeEndCarbon);

内容的提问来源于stack exchange,提问作者Dwight K. Shrute

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 15:27:06