Laravel 7 版本中所有模型 created_at 和 updated_at 的时间格式问题

2020-05-03 11:32:35 +08:00
 iPhonePKAndroid

Laravel 7 的是

2020-04-10T16:54:47.000000Z

这样的格式,是标准的时间允许自动转换,但是我想要的是 config/app.php 里面 timezone 的时间, 直接转换为 Y:m:d H:i:s 那样,不知道在 AppServiceProvider.php 里面如何设置?

需要默认输出时间为:

2020-02-21 12:21:22

这样

4922 次点击
所在节点    PHP
9 条回复
chotow
2020-05-03 12:20:57 +08:00
在模型文件里配置:

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

不知是否满足你的要求。
wdd2007
2020-05-03 12:25:43 +08:00
或者在 Model 里重写 serializeDate 方法:

protected function serializeDate(\DateTimeInterface $date)
{
return $date->format('Y-m-d H:i:s');
}
vacker
2020-05-03 12:52:41 +08:00
carbon 不香吗
iPhonePKAndroid
2020-05-03 13:14:59 +08:00
@chotow
@wdd2007 有没有统一配置的地方,默认格式还是 7 版本之前那样的
sunny2580839896
2020-05-03 13:29:52 +08:00
2020-04-10T16:54:47.000000Z 这种格式怎么转换成 date 类型???
chotow
2020-05-03 13:36:08 +08:00
这个变动来自于这个 PR:

https://github.com/laravel/framework/pull/30715

里边有说到为什么有这个变动。升级说明见这里:

https://laravel.com/docs/7.x/upgrade#date-serialization

想用回以前那个格式,重写模型的 serializeDate 方法即可,用 trait 或者自定义自己的 BaseModel 都行:

protected function serializeDate(\DateTimeInterface $date) : string
{
return $date->format($this->getDateFormat());
}
stevenhawking
2020-05-03 13:45:24 +08:00
```php
Carbon::setToStringFormat('Y-m-d H:i:s');
```
zachlhb
2020-05-03 15:59:27 +08:00
model 设置时间转换啊
ShareManT
2020-05-13 23:48:16 +08:00
@stevenhawking 这个已经被 deprecated 了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/668214

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX