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

Laravel技术实现:如何从日期中显示星期名称

在Laravel中提取并显示日期的星期名称

嘿,刚好处理过类似需求!在Laravel里处理日期,首选框架自带的Carbon扩展(Laravel默认已经集成,不用额外安装),比原生PHP日期函数省心太多,当然也可以优化你现有的代码方案,下面给你详细说说:


一、推荐方案:用Carbon优雅处理(Laravel专属)

Carbon是PHP日期处理的黄金标准,Laravel默认用它来处理模型的时间字段,提取星期名称超简单:

  • 获取完整星期名称(比如Friday):Carbon::parse($date)->format('l')
  • 获取缩写星期名称(比如Fri):Carbon::parse($date)->format('D')

示例:生成指定年月的带星期日期数组

如果你要生成某个月的所有日期+星期的数组,用Carbon可以少写很多冗余代码:

// Laravel控制器里一般自动引入,手动引入的话加这行
use Carbon\Carbon;

$month = 12;
$year = 2019;

// 创建当月第一天的Carbon实例
$firstDayOfMonth = Carbon::create($year, $month, 1);
$daysWithWeekday = [];

// 遍历当月所有天数(Carbon自带daysInMonth属性,不用自己计算)
for ($i = 0; $i < $firstDayOfMonth->daysInMonth; $i++) {
    $currentDate = $firstDayOfMonth->copy()->addDays($i);
    // 按需求格式拼接,这里是「年-月-日 星期缩写」
    $daysWithWeekday[] = $currentDate->format('Y-m-d D');
    // 要完整星期名的话,把格式改成 'Y-m-d l' 即可
}

echo json_encode($daysWithWeekday, JSON_PRETTY_PRINT);

为什么推荐这个方案?

  • 不用自己拼接日期字符串、规避strtotime的兼容性坑
  • Carbon自带大量实用方法(比如获取当月天数、加减日期),代码可读性拉满
  • 后续扩展需求(比如过滤周末、计算日期间隔)时,直接调用Carbon方法就行

二、优化你提供的原生PHP代码

如果你暂时不想用Carbon,也可以优化你现有的代码,解决一些潜在问题(比如原代码里sprintf的格式符错误):

$month = 12;
$year = 2019;
// 用mktime生成当月天数,比strtotime拼接字符串更可靠
$dayCount = date('t', mktime(0, 0, 0, $month, 1, $year));
$days = [];

for ($i = 1; $i <= $dayCount; $i++) {
    // 直接用mktime生成当前日期的时间戳,避免字符串解析问题
    $timestamp = mktime(0, 0, 0, $month, $i, $year);
    // 一步生成所需格式,去掉冗余中间变量
    $days[] = date('Y-m-d D', $timestamp);
}

echo json_encode($days, JSON_PRETTY_PRINT);

优化点说明:

  1. 替换strtotime为mktime:避免不同服务器环境下日期格式解析的兼容性问题
  2. 去掉冗余的tempDate变量:直接通过时间戳生成最终格式,减少代码复杂度
  3. 修复原代码的sprintf格式错误:原代码用%02s处理3字符的星期缩写,会导致格式异常,直接用date函数一步到位更准确

额外补充:Laravel视图中直接显示

如果是在Blade视图里要显示日期的星期名称,可以直接用Blade语法快速处理:

{{-- 显示完整星期名 --}}
{{ \Carbon\Carbon::parse($yourDate)->format('l') }}

{{-- 显示缩写星期名 --}}
{{ \Carbon\Carbon::parse($yourDate)->format('D') }}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:10:54