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

如何在Laravel中获取指定年份所有月份的起止时间?

在Laravel中获取指定年份所有月份的起止时间

Laravel集成了Carbon日期处理库,用它可以轻松生成指定年份下每个月份的开始和结束时间,以下是两种实用实现方式:

基础数组返回方式

直接循环1-12月,生成每个月的起止时间并存储到数组中:

function getYearMonthBoundaries(int $year): array
{
    $monthData = [];
    
    for ($month = 1; $month <= 12; $month++) {
        // 创建当月第一天的Carbon实例
        $monthStart = \Carbon\Carbon::create($year, $month, 1)->startOfMonth();
        // 基于当月第一天获取月末最后一刻
        $monthEnd = \Carbon\Carbon::create($year, $month, 1)->endOfMonth();
        
        $monthData[] = [
            'month_number' => $month,
            'start_datetime' => $monthStart->toDateTimeString(), // 格式:YYYY-MM-DD HH:MM:SS
            'end_datetime' => $monthEnd->toDateTimeString(),
            // 如需仅日期格式,可改用 toDateString()
        ];
    }
    
    return $monthData;
}

调用示例:

$2024Months = getYearMonthBoundaries(2024);
// 输出每个月的起止时间数组

Laravel集合返回方式

如果需要利用Laravel集合的链式操作能力(比如过滤、排序、转换),可以用集合实现:

use Illuminate\Support\Collection;
use Carbon\Carbon;

function getYearMonthBoundaries(int $year): Collection
{
    return collect(range(1, 12))->map(function ($month) use ($year) {
        $baseDate = Carbon::create($year, $month, 1);
        
        return [
            'month' => $month,
            'start' => $baseDate->startOfMonth(), // 返回Carbon对象,可后续直接操作
            'end' => $baseDate->endOfMonth(),
        ];
    });
}

额外说明

  • 时区处理:Carbon默认使用Laravel配置的时区(config/app.php中的timezone项),如需指定时区,可调用->setTimezone('Asia/Shanghai')调整。
  • 自定义格式:如果需要特定时间格式,可使用format()方法,比如$monthStart->format('Y-m-d 00:00:00')。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 19:57:40