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

Laravel中如何将Timestamp转为日期格式(不修改列类型)

解决Laravel中timestamp字段转日期格式的问题

一、修改模型转换逻辑

你当前的模型访问器是将日期转成了时间戳数字,现在需要调整为将timestamp转换为指定的日期格式,有两种方案可选:

方案1:修改访问器

直接修改现有的访问器,使用Carbon的format()方法返回格式化后的日期字符串:

use Carbon\Carbon;

public function getCreatedAtAttribute($value)
{
    // 替换成你需要的日期格式,比如'Y-m-d'、'Y-m-d H:i:s'等
    return Carbon::parse($value)->format('Y-m-d H:i:s');
}

public function getUpdatedAtAttribute($value)
{
    return Carbon::parse($value)->format('Y-m-d H:i:s');
}

方案2:使用Laravel内置的$casts属性(推荐)

这种方式无需手动写访问器,Laravel会自动处理字段转换,同时保留Carbon实例的所有功能:

protected $casts = [
    'created_at' => 'datetime:Y-m-d H:i:s',
    'updated_at' => 'datetime:Y-m-d H:i:s',
];

这里的datetime:后面跟着的是你需要的日期格式,按需修改即可。

二、视图(Blade文件)中的调用方式

根据你选择的方案,调用方式略有不同:

  1. 如果用了方案1或方案2:
    直接输出属性即可得到格式化后的日期:

    {{ $yourModelInstance->created_at }}
    {{ $yourModelInstance->updated_at }}
    
  2. 如果用了方案2($casts):
    因为属性是Carbon实例,你还可以在视图中灵活调整格式,比如:

    {{-- 只显示日期 --}}
    {{ $yourModelInstance->created_at->format('Y-m-d') }}
    
    {{-- 显示相对时间,比如"2小时前"、"3天前" --}}
    {{ $yourModelInstance->created_at->diffForHumans() }}
    

注意事项

修改模型后,建议执行以下命令清除缓存,避免旧逻辑残留:

php artisan optimize:clear

内容的提问来源于stack exchange,提问作者Alfian Yuda Pratama

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 20:25:18