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

Laravel 8+Inertia.js中created_at转Zulu格式的原因及解决方法

Laravel 8 + Inertia.js 时间戳前端变Zulu格式的原因与解决办法

原因

Laravel Eloquent模型的created_at/updated_at字段本质是Carbon日期实例,后端打印时看到的YYYY-mm-dd H:i:s是Carbon默认的字符串输出格式,但当Inertia将数据序列化传递给前端时,Carbon对象会遵循Laravel的默认序列化规则,被转换成ISO 8601标准格式(也就是带T和Z的Zulu时间格式),这就是前端拿到的格式和后端打印不一致的核心原因。

解决办法

方法一:全局修改模型日期序列化格式(推荐)

在User模型中重写serializeDate方法,统一指定日期字段的序列化格式,这样所有日期字段传给前端时都会是你想要的格式:

protected function serializeDate(\DateTimeInterface $date)
{
    return $date->format('Y-m-d H:i:s');
}

方法二:单独处理单个字段

如果只需要修改某个请求里的日期格式,可以在控制器/路由中手动格式化字段后再返回:

Route::get('/test', function () {
    $user = User::first();
    // 直接覆盖字段值为格式化后的字符串
    $user->created_at = $user->created_at->format('Y-m-d H:i:s');
    return Inertia::render('Test', compact('user'));
});

方法三:前端格式化(你当前的方案)

你现在用的前端转换代码是可行的,但如果后端统一处理的话,能减少前端的重复代码:

{{ new Date(user.created_at).toISOString().slice(0, 19).replace('T', ' ')}}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:50:23