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

Laravel中如何在下拉选择框显示月份名称与对应数字

解决Laravel选择框显示"01-January"格式月份的问题

嘿,作为Laravel新手碰到这个需求完全正常,我给你几个简单的实现方法,选你觉得顺手的来就行!

方法一:用Laravel自带的Carbon(最优雅)

Carbon是Laravel默认集成的日期处理工具,用它来格式化月份超省心。

首先在你的控制器里生成格式化好的月份数组:

use Carbon\Carbon;

// 生成1-12月的格式化数据
$getMonth = collect(range(1, 12))->map(function ($month) {
    // 'm'是两位数字月份,'F'是完整月份名称
    return Carbon::create()->month($month)->format('m-F');
});

然后在视图里直接循环输出就行:

<div class="col-xl-4 col-lg-12 col-md-12">
    <fieldset class="form-group">
        <label for="placeTextarea">Expiration Month</label>
        <select class="form-control" id="month" name="month" multiple>
            <option> Select Month </option>
            @foreach($getMonth as $month)
                <option>{{ $month }}</option>
            @endforeach
        </select>
    </fieldset>
</div>

方法二:用PHP原生函数(无需依赖Carbon)

如果你不想用Carbon,用PHP原生的str_pad和date函数也能轻松搞定:

控制器代码:

$getMonth = [];
for ($i = 1; $i <= 12; $i++) {
    // 把月份数字补成两位(比如1变成01)
    $monthNumber = str_pad($i, 2, '0', STR_PAD_LEFT);
    // 获取完整月份名称
    $monthName = date('F', mktime(0, 0, 0, $i, 1));
    $getMonth[] = "{$monthNumber}-{$monthName}";
}

视图部分和上面一样,直接循环输出即可。

方法三:直接在视图里格式化(如果$getMonth是原始月份数字)

要是你的$getMonth已经是1-12的数字数组,也可以直接在Blade模板里处理:

<div class="col-xl-4 col-lg-12 col-md-12">
    <fieldset class="form-group">
        <label for="placeTextarea">Expiration Month</label>
        <select class="form-control" id="month" name="month" multiple>
            <option> Select Month </option>
            @foreach($getMonth as $month)
                <option>{{ str_pad($month, 2, '0', STR_PAD_LEFT) }}-{{ date('F', mktime(0,0,0,$month,1)) }}</option>
            @endforeach
        </select>
    </fieldset>
</div>

这样处理后,你的选择框里就会完美显示01-January、02-February这种格式啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:02:33