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

如何从Laravel返回的created_at字段中提取仅日期部分?

如何从Laravel返回的created_at中提取日期部分

我使用phpMyAdmin作为数据库,通过Laravel控制器获取数据,需要从created_at字段仅提取日期部分(例如得到2022-01-24,而非2022-01-24T18:30:00.000000Z)。

我的路由配置(web.php):

Route::get('/fetch/curriculumVitaes', [App\Http\Controllers\Admin\CurriculumVitaesController::class, 'index']);

控制器的index方法:

public function index()
{     
   $curriculumVitaes =  CurriculumVitaes::where('deleted', '=', '0')->get();

   return $curriculumVitaes;
}

前端Vue渲染代码:

<tr v-for="(curriculumVitae, index) in curriculumVitaes" :key="index">
    <td class="text-center">{{ index + 1 }}</td>
    <td class="text-center">{{ curriculumVitae.created_at }}</td>
</tr>

以下是几种解决方法:

一、后端Laravel处理

1. 查询时直接格式化日期

通过selectRaw在数据库层面格式化,返回一个新的日期字段:

public function index()
{     
   $curriculumVitaes =  CurriculumVitaes::where('deleted', '=', '0')
       ->selectRaw('*, DATE(created_at) as created_date')
       ->get();

   return $curriculumVitaes;
}

前端渲染时改用created_date:

<td class="text-center">{{ curriculumVitae.created_date }}</td>

2. 遍历集合格式化

获取数据后,遍历集合修改created_at的格式:

public function index()
{     
   $curriculumVitaes =  CurriculumVitaes::where('deleted', '=', '0')->get()
       ->map(function($item) {
           $item->created_at = $item->created_at->format('Y-m-d');
           return $item;
       });

   return $curriculumVitaes;
}

前端无需修改,直接使用原字段即可。

3. 模型全局配置日期格式

在CurriculumVitaes模型中定义日期序列化规则,所有返回的日期字段都会自动格式化:

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

这种方式一劳永逸,所有该模型的日期字段返回时都会是Y-m-d格式。

二、前端Vue.js处理

如果不想改动后端,直接在前端处理日期:

1. 模板内直接处理

利用原生JS的Date对象拆分日期:

<tr v-for="(curriculumVitae, index) in curriculumVitaes" :key="index">
    <td class="text-center">{{ index + 1 }}</td>
    <td class="text-center">{{ new Date(curriculumVitae.created_at).toISOString().split('T')[0] }}</td>
</tr>

2. 使用Vue过滤器

定义一个全局或局部过滤器,复用日期格式化逻辑:

// 在Vue实例中添加
filters: {
    formatDate(dateStr) {
        const date = new Date(dateStr);
        return date.toISOString().split('T')[0];
    }
}

模板中使用过滤器:

<td class="text-center">{{ curriculumVitae.created_at | formatDate }}</td>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 14:39:14