**
laravel时间格式序列化
**
在使用 laravel-admin扩展显示时间格式的时候,时间后面出现了.000000Z。
查询数据库中的时间是正确的,怎么也搞不懂这个.000000Z是怎么出现的。
查看laravel-admin的文档,并未有对此现象的说明。那么很有可能是laravel框架本身的问题,于是查看laravel的文档说明,并未找到有此方面的说明,不过找到一个自定义日期序列化格式的方法,按照文档操作,重写serializeDate方法,问题成功解决。
protected function serializeDate(\DateTimeInterface $date){
return $date->format('Y-m-d H:i:s');
}
最终找到原因:
我使用的laravel版本是8.0,从laravel6升级laravel7 开始,使用了新的日期序列化格式。这一点在laravel7的文档中有说明,有兴趣的小伙伴可以自行去查看一下
日期序列化 受影响可能性:高
在 Eloquent 模型上使用 toArray 或 toJson 方法时,Laravel 7
将使用新的日期序列化格式。为了格式化日期以进行序列化,Laravel 将会使用 Carbon 的 toJSON 方法,该方法将生成与
ISO-8601 兼容的日期,包括时区信息及小数秒。此外,该更改提供了更好的支持,并与客户端日期解析库集成。此前,日期将序列化为以下格式:2020-03-04 16:11:00
。使用新格式进行序列化的日期将显示为:2020-03-04T20:01:00.283041Z如果你希望继续保持之前所用的格式,你可以重写模型的 serializeDate 方法:
$date * @return string */ protected function serializeDate(DateTimeInterface $date) { return $date->format($this->dateFormat ?: 'Y-m-d H:i:s'); } ``` 技巧:该更改仅影响序列化为数组和 JSON 的模型和模型集合,对数据库中的日期没有影响。