Laravel 文档 Eloquent: 修改器一节中 $dateFormat 参数可接受值说明

laravel文档Eloquent: 修改器一节 中指出时间格式可以修改
时间格式
默认情况下,时间戳将会以 'Y-m-d H:i:s' 格式化。如果你想要自定义自己的时间戳格式,可在模型中设置 $dateFormat 属性。该属性定义了时间属性应如何被保存到数据库,以及模型应被序列化成一个数组或 JSON 格式:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Flight extends Model
{
    /**
     * 模型的数据字段的保存格式。
     *
     * @var string
     */
    protected $dateFormat = 'U';
}

但并未指出$dateFormat 可以接受哪些值,和demo中的U的含义。
这里科普一下让小伙伴少走弯路
这个$dateFormat可以接受的值和php中date()函数第一个参数可以接受的值一样。
U的意思就是我们平常说的时间戳(10位到秒)
php在线手册地址:http://php.net/manual/zh/function.date.php


本帖已被设为精华帖!
本帖由系统于 7个月前 自动加精
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 5

@AndyWong
另外一个推荐做法是,在你的 ModelBase 里复写 Model 类里面的同名方法

   /**
     * Prepare a date for array / JSON serialization.
     */
    protected function serializeDate(DateTimeInterface $date) : string
    {
        return $date->format('Y-m-d H:i:s');
    }
3年前 评论

其实没什么的,因为 laravel 通过artisan自动维护 创建时间和更新时间,前面有如何 取消 自动维护时间, 这个只是把维护时间的类型 从 timespace 换到了 unix 时间戳 即 U

5年前 评论

存储的是 timestamp

读取结果是 : 2020-04-05T19:28:48.000000Z

怎样读取成为:2020-04-05 19:28:48 这个格式?

3年前 评论

@AndyWong

解决了。设置一个类转化一下


namespace App\Model;

use Illuminate\Database\Eloquent\Model;

class ModelBase extends Model
{
    public function getUpdatedAtAttribute($value)
    {
        return $value ? date("Y-m-d H:i:s", strtotime($value)) : '';
    }

    public function getCreatedAtAttribute($value)
    {
        return $value ? date("Y-m-d H:i:s", strtotime($value)) : '';
    }
}
3年前 评论

@AndyWong 用getter的方法每个属性都要写一次…… 有没有更简单的方法直接更改所有timestamps的显示格式?

3年前 评论
daili01 3年前

@AndyWong
另外一个推荐做法是,在你的 ModelBase 里复写 Model 类里面的同名方法

   /**
     * Prepare a date for array / JSON serialization.
     */
    protected function serializeDate(DateTimeInterface $date) : string
    {
        return $date->format('Y-m-d H:i:s');
    }
3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!