Используйте часовой пояс, установленный пользователем

По сути, когда я получаю столбец datetime в своей таблице, я хочу настроить его дату и время на основе часового пояса пользователя.

У меня есть этот код, но он, кажется, не работает, время никогда не меняется, хотя я уже меняю его часовой пояс:

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

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

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

Пожалуйста помоги.

2 ответа

Использование 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.

Вы можете преобразовать его в указанный пользователем часовой пояс на лету с помощью библиотеки 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

Другие вопросы по тегам