在数据库中,在created_at字段中我有值“2020-10-04 20:46:14”。在模型“Entry”中我有这个代码
protected $casts = [
'created_at' => 'datetime:d.m.Y H:i',
];
在前面的应用程序中,我得到值“04.10.2020 18:46”。在 config/app.php 中,我有时区配置 'timezone' => 'Europe/Berlin'。
有人知道问题出在哪里吗?为什么演员要改变时间?
每当您在响应中使用
Carbon
对象时,都会调用其 toJson()
方法。问题是,此方法始终显示 UTC
时区的时间。换句话说,当柏林是 20:46 时,按照 UTC 时间(例如伦敦),它就是 18:46。
我同意这种行为令人困惑。
要修复此问题,请指定您的自定义格式或使用您的模型作为响应,以利用
$casts
中的格式。快速解决方法是:
// your controller method
return [
'foo' => $entry->created_at->toDateTimeString(),
];
你可以看看这个问题: Laravel Carbon 返回错误的时间
您的投射日期格式看起来有误。它应该与数据库中存储的日期时间格式匹配:
protected $casts = [
'created_at' => 'datetime:Y-m-d H:i:s',
];
显示日期时应采用不同的格式
{{ $model->created_at->format('d.m.Y H:i') }}
但是演员阵容应该符合原始格式。