2009-06-16 14 views
6

Mam aplikację, która używa Zend_Date do wyświetlania dat. Instancje Zend_Date są tworzone przy użyciu datetime danych z MySQL, danych wejściowych użytkownika i bieżącej daty.Radzenie sobie z datami i strefami czasowymi, z Zend_Date

Chciałbym, aby moi użytkownicy mogli określić swoją strefę czasową i aby wszystkie daty były wyświetlane w ich czasie lokalnym.

W tej chwili mój kod działa tak:

$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 

To działa, ale wymaga połączenia setTimezone na każdy dzień. Czy istnieje łatwiejszy sposób zarządzania strefami czasowymi?

Chciałbym także użyć SET time_zone z MySQL, aby przywrócić skorygowane dane z MySQL. Wtedy potrzebowałbym tylko dostosować daty utworzone w skryptach PHP dla stref czasowych.

Chciałbym usłyszeć najlepszy sposób poradzenia sobie z tym, jeśli ktoś ma doświadczenie.

Dzięki

Odpowiedz

7

myślę, że ustawienie strefy czasowej PHP należy ustawić domyślne dla wszystkich kolejnych Zend_Date przypadkach. Na przykład:

date_default_timezone_set('Europe/Vienna'); 

Z Zend_Date section in the Zend Framework Reference Guide:

w PHP, możemy dostosować wszystkie funkcje daty i czasu związane z pracą dla danego użytkownika przez ustawienie domyślnej strefy czasowej zgodnie z oczekiwaniami użytkownika. Podczas tworzenia instancji Zend_Date ich strefa czasowa automatycznie stanie się bieżącą domyślną strefą czasową!

+2

Dzięki. Wydaje mi się, że najlepszym sposobem jest ustawienie UTC jako domyślnego, praca z datownikiem UTC wewnętrznie i użycie setTimezone do tworzenia lokalnych czasów czasowych. –

1

Myślę, że można skorzystać z Zend_Locale, przeczytać kilka dokumentów na ten temat, całkiem pewny, że uda się go uruchomić. Z drugiej strony, jeśli użyjesz Zend_Cache i Zend_Locale/Zend_Date, to pomoże ci to poprawić nieco prędkość. Istnieją przykłady użycia również w dokumentach Zend Framework.

Powiązane problemy