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

Laravel中如何根据日期区间生成连续日期列表?

在Laravel中生成起止日期间的连续日期列表

方法一:使用Carbon的period()方法(Laravel 8及以上版本推荐)

Laravel默认集成的Carbon扩展提供了period()方法,能快速生成两个日期之间的连续日期序列,用法简洁:

// 假设从数据库取出目标记录,$model为查询结果
$startDate = Carbon\Carbon::parse($model->start_date);
$endDate = Carbon\Carbon::parse($model->end_date);

// 生成包含所有连续日期的数组
$dates = $startDate->period($endDate)->toArray();

// 遍历输出每个日期
foreach ($dates as $date) {
    echo $date->format('Y-m-d') . PHP_EOL;
}

运行后即可得到你需要的连续日期列表。

方法二:手动循环生成(兼容所有Laravel版本)

如果你的Laravel版本较低,或者需要更灵活的逻辑控制,可以手动循环生成:

$startDate = Carbon\Carbon::parse($model->start_date);
$endDate = Carbon\Carbon::parse($model->end_date);

$dates = [];
$currentDate = $startDate->copy();

// 循环直到当前日期超过结束日期
while ($currentDate->lte($endDate)) {
    $dates[] = $currentDate->format('Y-m-d');
    $currentDate->addDay();
}

// 遍历输出结果
foreach ($dates as $date) {
    echo $date . PHP_EOL;
}

方法三:结合Laravel集合处理

利用Laravel的集合特性,可以更优雅地处理日期序列:

$startDate = Carbon\Carbon::parse($model->start_date);
$endDate = Carbon\Carbon::parse($model->end_date);

$dateCollection = collect();
$currentDate = $startDate->copy();

while ($currentDate->lte($endDate)) {
    $dateCollection->push($currentDate->format('Y-m-d'));
    $currentDate->addDay();
}

// 输出集合中的每个日期
$dateCollection->each(function ($date) {
    echo $date . PHP_EOL;
});

以上几种方法都能实现需求,可根据自己的Laravel版本和实际场景选择使用。

内容的提问来源于stack exchange,提问作者Furqon Qolbi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 02:22:03