2010-04-24 48 views
1

在我的Drupal安装,我可以得到从UTC在几秒钟内偏移使用Drupal的时区信息

variable_get('date_default_timezone', 0) 

但是,现在我们有夏令时间,当时我在管理面板中指定的时区我得到的东西总是关闭一个小时。有没有办法从Drupal检索实际的时区字符串,例如“Europe/Berlin”?

的原因是,我必须用Zend Framework的Zend_Date的运算使用,但Drupal没有设置PHP默认的时区,如

echo date_default_timezone_get(); 

让我系统/ LOCALTIME。

回答

2

我找到了解决办法:

date_default_timezone只能设置,当自定义用户时区是在管理面板禁用!确保你检查了这个选项。

2

变量date_default_timezone应始终为正确。例如,在法国,冬季(UTC + 1)应为3600,夏季(UTC + 2)应为7200。


事情是它包含了不会被魔术更改值:有一个cron钩叫date_timezone_cron必须按顺序运行,以改变在需要时(引用)

cron运行时更新站点时区偏移量。
这是为了确保 依赖于时区 偏移量的模块具有到 过程的当前信息。


后,如果您需要在当前时区的名字 - 一个在管理部分中选择 - 有可能是在variable表用于另一行。

你可以用SQL如发现:

select * 
from variable 
where name like '%timezone%'; 

这将最有可能返回多行;但其中一个应该是明显的选择。

date_timezone.module的源代码判断,我敢打赌一个名为date_default_timezone_name的变量。