在 用 Laravel-admin 扩展的时候时间日期格式多了个.000000Z, 而且格式也不对,这个如何解决呢?


前几天在使用laravel-admin扩展的时候出现了这个现象,用model生成controller的时候时间格式是如图所示。
明明在数据库里美这个.000000Z的,那这个.000000Z是如何出现的呢?
这是因为从laravel7开始,数据的格式化(data serialization)的时候就会出现这样的现象。
具体问题的说明在这里:
learnku.com/docs/laravel/7.x/upgra...
当碰到日期时间的时候,框架用到了carbon的toJson()方法,导致的结果会是这样的,会产生跟ISO-8601兼容的格式,而且这个总是以UTC的格式显示。这个咱们先不刨根问底了。
如果想去掉就要在模型文件里这样操作:

use DateTimeInterface;

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

加完这个问题就解决了。

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 10

use DefaultDatetimeFormat;

3年前 评论
sachu (楼主) 3年前
黑白的记忆 (作者) 3年前

刚好我也遇到这个问题

3年前 评论

file

我是直接修改这个文件中的这个函数,是不是不规范啊 protected function serializeDate(DateTimeInterface $date)

3年前 评论
anniversary 3年前

还有一种方法,模型中指定格式

protected $casts = [
    'created_at' => 'datetime:Y-m-d H:i:s',
    'updated_at' => 'datetime:Y-m-d H:i:s'
];
2年前 评论
clark 2年前
bluememory 1年前

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