Laravel中使用Carbon生成过去30天日期数组的实现方法求助
嘿,这个需求用Carbon来实现简直手到擒来!我给你两种实用的写法,看哪种更匹配你的预期:
方式一:循环生成(直观易懂)
如果你的目标是获取过去30天每天的日期日份(比如今天是20号,数组就是[19,18,17,...]这样的序列),可以用循环配合Carbon的日期操作:
// 初始化空数组 $past30Days = []; // 获取当前日期 $today = \Carbon\Carbon::now(); // 循环30次,每次往前推1天 for ($i = 1; $i <= 30; $i++) { // 注意用copy()避免修改原Carbon实例 $pastDate = $today->copy()->subDays($i); // 提取日期的日部分,加入数组 $past30Days[] = $pastDate->day; } // 此时$past30Days就是你要的[19,18,17,...]这样的数组
方式二:Laravel集合写法(更优雅)
如果你习惯用Laravel的集合操作,一行代码就能搞定:
$past30Days = collect(range(1, 30))->map(function ($dayOffset) { return \Carbon\Carbon::now()->subDays($dayOffset)->day; })->toArray();
额外说明
- 如果你需要的不是日份,而是完整的日期字符串(比如
'2024-05-19'),只需要把->day改成->format('Y-m-d')即可。 - 要是你想要的是“距离今天的天数倒序”(比如30,29,...,1),那更简单:
$days = range(30, 1);
内容的提问来源于stack exchange,提问作者Slygoth
相关产品推荐
相关产品推荐

