2011-12-21 106 views
3

在我的Drupal站點上創建新事件時,我將事件的日期/時間設置爲我所假設的當地時間。我預計系統中的日期/時間將設置爲我在添加/編輯表單中看到的值,但不是;它被設置爲UTC。如何在Drupal中使用Date模塊正確顯示時間?

Event Start (add/edit form): 2012-12-20 1:00pm EST 
Event Start (database):  2012-12-20 6:00pm UTC 

當我去使用日期()甚至默認的時區設置爲EST(「美國/多倫多」)的日期後顯示此日期/時間/時仍顯示出2012年12月20日下午6:00 。

該問題似乎不一定是drupal,日期/時間正在顯示它的存儲方式,但我認爲這個問題可能是日期/時間在添加/編輯表單上的輸入控件...可能的JavaScript時間相關。因爲他們顯示


值被公佈:下午5:00去到服務器3個不同的值:5,00,PM。它們以UTC的形式存儲在數據庫中,但無論我嘗試什麼,它們始終顯示爲UTC。具有S-


我恨做手工,但這個工程::我已經試過format_date,date_default_timezone_set,設置PHP時區的.htaccess文件...沒有運氣

$tz = new DateTimeZone('America/Toronto'); 
$offset = $tz->getOffset(new DateTime($start_date)); 
$start_stamp = strtotime($start_date) + $offset; 
+0

謝謝你的解決方法。如果您已經使用DateObjects,那麼它們可以很好地作爲DateTimeZone :: getOffset的參數。 – nymo 2012-06-07 02:18:47

回答

-1

如果你有一個日期格式(配置頁面在/管理/配置/區域/日期 - 時間),你可以使用機器名再使用它:

$date = new DateObject($timestamp); 
$value = date_format_date($date, 'my_date_string_format'); 
+0

似乎回覆UTC時間不是當地時間:s – SomethingOn 2012-07-24 15:51:01

+0

這不會處理UTC。 – Christian 2012-08-21 00:03:35