2009-06-16 112 views
6

我有一個使用Zend_Date顯示日期的應用程序。 Zend_Date實例是使用來自MySQL的日期時間數據,用戶輸入和當前日期創建的。處理日期和時區,使用Zend_Date

我希望我的用戶能夠指定他們的時區和所有日期以顯示當地時間。

目前我的代碼是這樣的:

$date = '2009-01-01 10:30:00'; 

$date = new Zend_Date($date, Zend_Date::ISO_8601); 

echo $date->get(Zend_Date::TIME_MEDIUM); //10:30:00 

$date->setTimezone('Australia/ACT'); 

echo $date->get(Zend_Date::TIME_MEDIUM); //21:30:00 

這工作,但需要在每一個日期setTimezone電話。有沒有更簡單的方法來管理時區?

我也一直在尋找使用SET time_zone與MySQL,從MySQL返回調整後的數據。然後,我只需要調整PHP腳本中爲時區創建的日期。

如果有人有經驗,我很樂意聽到處理這個問題的最佳方法。

謝謝

回答

7

我認爲設置PHP時區應該設置所有後續Zend_Date實例的默認值。例如:

date_default_timezone_set('Europe/Vienna'); 

Zend_Date section in the Zend Framework Reference Guide

在PHP中,我們可以調整所有的日期和時間相關的功能通過根據用戶的期望設置默認時區爲特定用戶的工作。創建Zend_Date實例時,它們的時區將自動成爲當前的默認時區!

+2

謝謝。看來最好的方法是將UTC設置爲默認值,在內部使用UTC datetime,並使用setTimezone生成特定於時區的本地時間。 – 2009-06-16 21:30:59

1

我想你可以使用Zend_Locale,閱讀一些關於它的文檔,很確定你可以使它工作。另一方面,如果你使用Zend_Cache和Zend_Locale/Zend_Date,這將有助於提高速度。 zend框架文檔中也有使用示例。