2010-04-24 78 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的變量。