在Laravel中如何仅通过月份数字获取对应月份的总天数
实现方案
在Carbon中完全可以仅通过月份+年份参数直接计算对应月份天数,不需要完整日期,两种常用实现方式如下:
方式1:实例化Carbon对象后调用daysInMonth属性
如果直接使用当前年份计算,代码如下:
// 顶部如果没有自动引入Carbon需要先加 use Carbon\Carbon; // $month 支持传入 '01'/'02' 字符串格式 或 1/2 数字格式 $month = '02'; $days = Carbon::createFromFormat('m', $month)->daysInMonth;
如果需要指定年份(避免闰年2月天数计算不符合预期),代码如下:
$customYear = 2024; $month = '02'; $days = Carbon::create($customYear, $month)->daysInMonth; // 上述代码返回29,符合2024年闰年2月的天数规则
方式2:直接调用Carbon静态方法
可以不用实例化,直接调用静态方法daysInMonth实现:
$year = 2023; $month = '02'; $days = Carbon::daysInMonth($year, $month); // 上述代码返回28
注意事项
- 若不主动指定年份,Carbon默认取当前系统年份计算天数,如果你业务场景有固定年份要求,建议手动传年份参数避免误差
- 输入的月份格式兼容带前导零的字符串、不带前导零的数字两种格式,不需要额外做格式转换
内容的提问来源于stack exchange,提问作者Saad Ramay
相关产品推荐
相关产品推荐

