Своя timeZone для каждого пользователя

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
celsoft
Сообщения: 24
Зарегистрирован: 2014.08.07, 11:09
Откуда: Россия, г. Благовещенск
Контактная информация:

Своя timeZone для каждого пользователя

Сообщение celsoft »

Привет. Требуется предоставить выбор timeZone в профиле пользователя.
Пользователь выбрал => сохранили выбранную timeZone в бд. Что дальше? Где и как лучше ее применить?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Своя timeZone для каждого пользователя

Сообщение ElisDN »

Код: Выделить всё

if (!Yii::$app->user->isGuest) {
    Yii::$app->timeZone = Yii::$app->user->identity->timezone;
}
Последний раз редактировалось ElisDN 2016.09.30, 18:51, всего редактировалось 1 раз.
Аватара пользователя
celsoft
Сообщения: 24
Зарегистрирован: 2014.08.07, 11:09
Откуда: Россия, г. Благовещенск
Контактная информация:

Re: Своя timeZone для каждого пользователя

Сообщение celsoft »

ElisDN писал(а):

Код: Выделить всё

if (!Yii::$app->user->isGuest) {
    Yii::$app->formatter->timeZone = Yii::$app->user->identity->timezone;
} 
Дмитрий спасибо за ответ. Это я знаю. Скажите куда лучше запихать этот код?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Своя timeZone для каждого пользователя

Сообщение ElisDN »

В обработчик beforeRequest или в автозагружаемый через BootstrapInterface класс.
Аватара пользователя
celsoft
Сообщения: 24
Зарегистрирован: 2014.08.07, 11:09
Откуда: Россия, г. Благовещенск
Контактная информация:

Re: Своя timeZone для каждого пользователя

Сообщение celsoft »

ElisDN писал(а):В обработчик beforeRequest или в автозагружаемый через BootstrapInterface класс.
Спасибо.

Ребят, случайно ни у кого не завалялась база временных зон на русском языке? Например (UTC+03:00) Европа/Москва
Аватара пользователя
celsoft
Сообщения: 24
Зарегистрирован: 2014.08.07, 11:09
Откуда: Россия, г. Благовещенск
Контактная информация:

Re: Своя timeZone для каждого пользователя

Сообщение celsoft »

В общем нашел как сделать, но не получается подключить IntlTimeZone.
use IntlDateFormatter;
use IntlTimeZone;
IntlDateFormatter работает. А на IntlTimeZone, yii ругается Class 'IntlTimeZone' not found.
$zone = IntlTimeZone::createTimeZone("zone_name");
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Своя timeZone для каждого пользователя

Сообщение zelenin »

celsoft писал(а):В общем нашел как сделать, но не получается подключить IntlTimeZone.
use IntlDateFormatter;
use IntlTimeZone;
IntlDateFormatter работает. А на IntlTimeZone, yii ругается Class 'IntlTimeZone' not found.
$zone = IntlTimeZone::createTimeZone("zone_name");
The IntlTimeZone class

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)
http://php.net/manual/ru/class.intltimezone.php
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Своя timeZone для каждого пользователя

Сообщение zelenin »

ElisDN писал(а):

Код: Выделить всё

if (!Yii::$app->user->isGuest) {
    Yii::$app->formatter->timeZone = Yii::$app->user->identity->timezone;
}
почему форматтер? вроде у приложения есть поле timeZone
Аватара пользователя
celsoft
Сообщения: 24
Зарегистрирован: 2014.08.07, 11:09
Откуда: Россия, г. Благовещенск
Контактная информация:

Re: Своя timeZone для каждого пользователя

Сообщение celsoft »

zelenin писал(а):
celsoft писал(а):В общем нашел как сделать, но не получается подключить IntlTimeZone.
use IntlDateFormatter;
use IntlTimeZone;
IntlDateFormatter работает. А на IntlTimeZone, yii ругается Class 'IntlTimeZone' not found.
$zone = IntlTimeZone::createTimeZone("zone_name");
The IntlTimeZone class

(PHP 5.5.0, PHP 7, PECL >= 3.0.0a1)
http://php.net/manual/ru/class.intltimezone.php
Не обратил внимания. Спасибо.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Своя timeZone для каждого пользователя

Сообщение ElisDN »

zelenin писал(а):почему форматтер? вроде у приложения есть поле timeZone
Забыл )) Исправил ответ.
Аватара пользователя
celsoft
Сообщения: 24
Зарегистрирован: 2014.08.07, 11:09
Откуда: Россия, г. Благовещенск
Контактная информация:

Re: Своя timeZone для каждого пользователя

Сообщение celsoft »

ElisDN писал(а):
zelenin писал(а):почему форматтер? вроде у приложения есть поле timeZone
Забыл )) Исправил ответ.
Тогда от меня вопрос. Почему у приложения,а не у форматтера? :) В чем разница?
Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Своя timeZone для каждого пользователя

Сообщение Onotole »

celsoft писал(а):
ElisDN писал(а):
zelenin писал(а):почему форматтер? вроде у приложения есть поле timeZone
Забыл )) Исправил ответ.
Тогда от меня вопрос. Почему у приложения,а не у форматтера? :) В чем разница?
В том, что установив в форматтере, будет действовать только в форматтере. А если установить в приложении, то действовать будет на всё приложение, включая форматтер
Аватара пользователя
celsoft
Сообщения: 24
Зарегистрирован: 2014.08.07, 11:09
Откуда: Россия, г. Благовещенск
Контактная информация:

Re: Своя timeZone для каждого пользователя

Сообщение celsoft »

Onotole писал(а):
celsoft писал(а):
ElisDN писал(а): Забыл )) Исправил ответ.
Тогда от меня вопрос. Почему у приложения,а не у форматтера? :) В чем разница?
В том, что установив в форматтере, будет действовать только в форматтере. А если установить в приложении, то действовать будет на всё приложение, включая форматтер
А если есть компонент в котором нужно применить другую тайм зону? В таком случае нужно именно форматтеру передавать таймзону по идее.
В общем суть понял. Спасибо за ответы.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Своя timeZone для каждого пользователя

Сообщение zelenin »

celsoft писал(а):
Onotole писал(а):
celsoft писал(а): Тогда от меня вопрос. Почему у приложения,а не у форматтера? :) В чем разница?
В том, что установив в форматтере, будет действовать только в форматтере. А если установить в приложении, то действовать будет на всё приложение, включая форматтер
А если есть компонент в котором нужно применить другую тайм зону? В таком случае нужно именно форматтеру передавать таймзону по идее.
В общем суть понял. Спасибо за ответы.
ну вы хотите во всем инстансе применить зону для юзера, и кое-где подправить? или кое-где подправить, а в остальном чтобы работало "по Москве"?
Аватара пользователя
celsoft
Сообщения: 24
Зарегистрирован: 2014.08.07, 11:09
Откуда: Россия, г. Благовещенск
Контактная информация:

Re: Своя timeZone для каждого пользователя

Сообщение celsoft »

zelenin писал(а):
celsoft писал(а):
Onotole писал(а): В том, что установив в форматтере, будет действовать только в форматтере. А если установить в приложении, то действовать будет на всё приложение, включая форматтер
А если есть компонент в котором нужно применить другую тайм зону? В таком случае нужно именно форматтеру передавать таймзону по идее.
В общем суть понял. Спасибо за ответы.
ну вы хотите во всем инстансе применить зону для юзера, и кое-где подправить? или кое-где подправить, а в остальном чтобы работало "по Москве"?
Во всем. Я сначала не понял суть просто. Еще раз спасибо что разъяснили что да как. :)
Ответить