В моей базе данных даты хранятся в формате timestamp with time zone (например, 2017-07-30 21:00:00.000000 +03:00). Соответственно эту дату везде у себя я вижу как 21:00:00 30.07.2017, что меня полностью устраивает. Но когда я вылил свой сайт на бой, то эта дата стала выглядеть как 19:00:00 30.07.2017 (применилась временная зона Лондона, выставленная на сервере). Как выставить единую временную зону из проекта, игнорируя выбор, который делают php и бд? Чтобы при этом ещё не навешивать форматтер на каждый вызов даты. Ставил в конфиге 'timeZone' => 'Europe/Moscow', думал, это автоматически сработает для всего проекта, но не помогло.
Чтобы везде выглядели одинаково, приводите их к одному знаменателю, например к UTC+0.
Вообще вам на заметку.
All timezone-aware dates and times are stored internally in UTC. They are converted to local time in the zone specified by the TimeZone configuration parameter before being displayed to the client.
freeExec: Я и имел в виду, что нуля. Непонятно что вы предлагаете приводить к UTC+0, если всё и так уже корректно. Находясь в разных часовых поясах, пользователи должны видеть дату относительно своего часового пояса. А у меня они будто всегда в UTC+01.
etterej: Абсолютно верно. Каждый выбирает то, что ему удобно.
Вы можете замечательным образом придумать свой вариант и спокойно его использовать, радуясь мысли, что ваш вариант - инновация и не ретроградство.
К слову, еда на костре очень вкусная.
Не надо рассматривать мой ответ как ёрничество, просто иногда простые варианты проще всего.
etterej: Вот вас не понять, ты вы хотите единое время для всех, то вам подавай каждому пользователю свой часовой пояс. Вы уж определитесь чего вы хотите.
freeExec: Моё желание изложено в вопросе, который открывал этот пост. С тех пор оно не изменялось. То есть я ожидаю, что укажу приложению конкретную временную зону, и все даты будут из этой временной зоны. И на это не будут влиять ни настройки бд, ни настройки php.
etterej: Тогда вообще не понятно в чём у вас претензии к БД. Она хранит и возвращает даты с часовым поясом. А вы уж в своём приложение это крутите как хотите и отображайте со своими пожеланиями.
freeExec: Ну в том-то и проблема, что у меня не получается отобразить даты как-то отлично от той временной зоны, которую я вижу, когда выполняю, например, date_default_timezone_get().
freeExec: Даже пробовал непосредственно в представлении нечто такое
echo Yii::$app->timeZone; // timezone from config.
Yii::$app->timeZone = 'America/Los_Angeles'; // change timezone on the fly
echo Yii::$app->timeZone; // new timezone
Таймзона действительно меняется, но на даты это никак не влияет