Ответ 1
Я нашел решение:
date_default_timezone устанавливается только тогда, когда пользовательские часовые пояса отключены на панели администратора! Убедитесь, что вы выбрали эту опцию.
В моей установке drupal я могу получить смещение от UTC в секундах до часового пояса, который я указал в панели администратора, используя
variable_get('date_default_timezone', 0)
Однако теперь, когда у нас есть летнее время, время, которое я получаю, всегда отключается на один час. Есть ли способ получить фактическую строку часового пояса от Drupal, например, "Европа/Берлин"?
Причина в том, что я должен использовать это с Zend Framework Zend_Date, но Drupal не устанавливает часовой пояс PHP по умолчанию, поскольку
echo date_default_timezone_get();
дает мне Системное/Локальное время.
Я нашел решение:
date_default_timezone устанавливается только тогда, когда пользовательские часовые пояса отключены на панели администратора! Убедитесь, что вы выбрали эту опцию.
Переменная date_default_timezone
всегда должна быть права.
Например, во Франции это должно быть 3600 зимой (UTC + 1) и 7200 летом (UTC + 2).
Вещь - это значение, которое она содержит, не изменится по магии: есть крюк cron
, называемый date_timezone_cron
, который должен выполняться в порядке изменить это, когда требуется (цитирование):
Обновить смещение часового пояса сайта, когда cron работает.
Это необходимо сделать что модули, которые полагаются на часовой пояс смещение имеет текущую информацию для процесс.
После этого, если вам нужно имя текущего часового пояса - тот, который выбран в разделе администрирования, для этого есть, вероятно, еще одна строка в таблицах variable
.
Вы можете найти его с помощью SQL, например:
select *
from variable
where name like '%timezone%';
Скорее всего, он вернет несколько строк; но один из них должен быть очевидным выбором.
Судя по исходному коду date_timezone.module
, я бы поставил на переменную под названием date_default_timezone_name
.