有没有一种简单的方法可以仅在视图 Laravel 上更改时区?

Has*_*nda 3 php laravel laravel-blade

因此,我已经使用 UTC 在数据库中保存了任何日期,并且可以像 $data->created_at 或 $data->blocked_at 一样获取它。因此,在我的配置中,我将时区设置为 UTC,然后我想在查看时将其从 UTC 转换为 UTC+7 或其他时区。

有没有一种简单的方法可以在查看所有日期时转换我想要的时区?

我还在使用 Laravel 5.8

编辑:

我正在使用答案,但在我的基本模型上实现它,如下所示:

public function getDateConverter($key){
    if(strtotime($this->{$key})){
        $date = Carbon::createFromFormat('Y-m-d H:i:s', $this->{$key});
        $date->setTimezone(env("APP_TIMEZONE_VIEW"));
        return $date->toDateTimeString();
    } else {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

我将像这样调用列名称 $data->getDateConverter("created_at");

Huy*_*ịnh 6

您可以使用核心中包含的 Carbon

$timestamp = '2014-02-06 16:34:00';
$date = Carbon::createFromFormat('Y-m-d H:i:s', $timestamp, 'Europe/Stockholm');
$date->setTimezone('UTC');
Run Code Online (Sandbox Code Playgroud)

Europe/Stockholm 是您的默认时区,UTC 是您要设置的时区

如果你想在显示时将其从模型转换,请尝试访问器

public function getCreatedAtAttribute($value)
    {
        $date = Carbon::createFromFormat('Y-m-d H:i:s', $value, 'Europe/Stockholm');
        $date->setTimezone('UTC');
        return $date->toDateTimeString();
    }
Run Code Online (Sandbox Code Playgroud)