如何在created_at
模型的User
字段上更改时区?例如,现在应用时区为UTC
,我必须在将数据保存到数据库之前将时区created_at
字段更改为Europe/Paris
并将updated_at字段时区更改为Europe/London
。我有示例代码来更改字段时区。但我不知道在模特身上使用它的地方。我的示例代码更改时区:
$this->created_at->timezone('Europe/London')->format('d:H:i');
$this->updated_at->timezone('Europe/Paris')->format('H:i');
答案 0 :(得分:0)
您可以在.env文件中为所有应用更改时区,您可以像这样更改时区
// .env文件
'timezone' => env('APP_TIMEZONE', 'UTC')
您必须根据需要使用自定义时区更改UTC
您也可以在app.php文件夹中更改时区
'timezone'=> 'UTC'
如果你想改变格式时间,你可以在模型中轻松设置这个受保护的属性
protected $dateFormat
例如
protected $dateFormat = 'U';
您可以在此地址中设置时区
答案 1 :(得分:0)
您也可以在模型中创建方法,例如。像这样的本地范围
public function scopeChangeTimezone($query)
{
return Carbon\Carbon::parse($value, 'America/New_York')->
timezone($this->deployment->timezone);
}
并记住导入Carbon并将America / New_York更改为您的自定义时区
$data = App\User::->ChangeTimezone()->orderBy('created_at')->get();
您必须使用范围前缀创建方法,然后使用不带范围前缀
如果你想从模型中获取数据或在你可以做的任何地方使用它
检查一下,如果这种方式不起作用,请打电话给我,然后我尝试
答案 2 :(得分:0)
使用 accessors:
namespace App\Models;
// ...
use Carbon\Carbon;
// ....
public function getCreatedAtAttribute(){
return Carbon::parse($this->attributes['created_at'])->setTimezone("TimeZone identifier" );
}
public function getUpdatedAtAttribute(){
return Carbon::parse($this->attributes['updated_at'])->setTimezone("TimeZone identifier" );
}