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

如何在Blade模板中修改日期格式:转换YYYY-MM-DD为指定格式

解决方案:Laravel Blade中转换日期格式

看起来你是在Laravel项目里用Blade模板处理日期格式转换对吧?针对你要的两种格式,这里提供具体实现方法:

1. 转换为DD--MM--YEAR格式

如果你的$expenses->date是Eloquent模型的日期字段(默认会被转为Carbon实例),直接调用format()方法即可:

<td>{{ $expenses->date->format('d--m--Y') }}</td>

如果date字段没有被模型识别为日期类型(比如没在模型的$dates属性里添加,或者是字符串),需要先转成Carbon实例再格式化:

<td>{{ Carbon\Carbon::parse($expenses->date)->format('d--m--Y') }}</td>

2. 转换为英文序数格式(如5th May 2018)

这种格式需要处理日期的序数后缀(st/nd/rd/th),可以直接在Blade里写逻辑,或者封装成辅助函数更优雅:

方式一:直接在Blade中处理

<td>
    @php
        // 确保日期是Carbon实例
        $date = $expenses->date instanceof Carbon\Carbon ? $expenses->date : Carbon\Carbon::parse($expenses->date);
        $day = $date->day;
        // 判断序数后缀
        $suffix = match(true) {
            $day % 10 == 1 && $day != 11 => 'st',
            $day % 10 == 2 && $day != 12 => 'nd',
            $day % 10 == 3 && $day != 13 => 'rd',
            default => 'th',
        };
        // 拼接最终格式
        echo "{$day}{$suffix} {$date->format('F Y')}";
    @endphp
</td>

方式二:封装辅助函数(推荐,复用性更高)

  1. 在项目根目录的app文件夹下创建Helpers.php文件,添加以下函数:
<?php

use Carbon\Carbon;

function formatDateWithOrdinal($date) {
    // 转换为Carbon实例
    $carbonDate = is_a($date, Carbon::class) ? $date : Carbon::parse($date);
    $day = $carbonDate->day;
    
    // 确定序数后缀
    $suffix = match(true) {
        $day % 10 == 1 && $day != 11 => 'st',
        $day % 10 == 2 && $day != 12 => 'nd',
        $day % 10 == 3 && $day != 13 => 'rd',
        default => 'th',
    };
    
    return "{$day}{$suffix} {$carbonDate->format('F Y')}";
}
  1. 打开composer.json,在autoload部分添加files配置:
"autoload": {
    "psr-4": {
        "App\\": "app/",
        "Database\\Factories\\": "database/factories/",
        "Database\\Seeders\\": "database/seeders/"
    },
    "files": [
        "app/Helpers.php"
    ]
}
  1. 执行composer dump-autoload命令加载辅助函数
  2. 之后在Blade里就可以直接调用:
<td>{{ formatDateWithOrdinal($expenses->date) }}</td>

注意事项

  • 确保你的项目已经安装并启用了Carbon(Laravel默认自带,无需额外安装)
  • 如果日期字段是字符串格式,Carbon::parse()可以自动识别YYYY-MM-DD格式,无需额外处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:27:43