使用用户设置的时区

时间:2016-04-20 06:19:02

标签: php timezone laravel-5.1 mutators

基本上,当我在表格中获得datetime列时,我想根据用户时区调整其日期和时间。

我有这段代码,但它似乎不起作用,即使我已经改变了它的时区,时间永远不会改变:

public function getCreatedAtAttribute($datetime) {
    $timezone = \Auth::user()->timezone;

    $datetime = $this->asDateTime($value);

    return $datetime->timezone($timezone);
}

请帮忙。

2 个答案:

答案 0 :(得分:0)

使用date_default_timezone_set()设置用户时区。

public function getCreatedAtAttribute($datetime) {
    $timezone = \Auth::user()->timezone;

    //Call date_default_timezone_set function to set user timezone or whenever it appropieate
    date_default_timezone_set($timezone); 

    $datetime = $this->asDateTime($value);

    return $datetime->timezone($timezone);
}

<强>更新

还可以使用Config::set('app.timezone', $timezone)更改laravel配置时区。

答案 1 :(得分:0)

您可以使用Carbon库将其转换为用户指定的时区,该库已在Laravel内部 - 您无需添加或安装任何软件包。 像这样:

public function getCreatedAtAttribute($datetime) {
    return $datetime->timezone(\Auth::user()->timezone)->format('Y-m-d H:i:s');
}

来自:http://laraveldaily.com/timezone-settings-for-created_at-and-similar-fields/?utm_source=tuicool&utm_medium=referral