在我的drupal安装中,我可以使用
在几秒钟内得到我在管理面板中指定的时区的UTC偏移量variable_get('date_default_timezone', 0)
但是,现在我们有了夏令时,我得到的时间总是一小时。有没有办法从Drupal中检索实际的时区字符串,例如“Europe / Berlin”?
原因是,我必须在Zend Framework的Zend_Date中使用它,但是Drupal没有设置PHP默认时区,因为
echo date_default_timezone_get();
给我系统/本地时间。
答案 0 :(得分:2)
变量date_default_timezone
应始终正确。
例如,在法国,冬天应该是3600(UTC + 1),夏天应该是7200(UTC + 2)。
事情是它包含的值不会因魔术而改变:有一个名为date_timezone_cron
的cron
钩子必须运行才能在需要时更改(引用) :
更新站点时区偏移量 cron跑。
这是为了确保 依赖于时区的模块 offset有当前信息 过程
之后,如果您需要当前时区的名称 - 在admin部分中选择的名称 - 那么variable
表中可能还有另一行。
您可以使用SQL找到它,例如:
select *
from variable
where name like '%timezone%';
很可能会返回几行;但其中一个应该是明显的选择。
根据date_timezone.module
的源代码判断,我会打赌一个名为date_default_timezone_name
的变量。
答案 1 :(得分:2)
我找到了解决方案:
仅在管理面板中禁用自定义用户时区时才设置date_default_timezone!确保选中该选项。