2012-09-30 9 views
6

Jeśli wypisze datę/czas w index.php echo date('m/d/Y h:i:s a', time());. Jest prawidłowe. Jeśli wyprowadzę datę/czas gdziekolwiek później, w rozszerzeniu, na przykład, jest to dokładnie 4 godziny. Ustawiłem strefę czasową prawidłowo w php.ini oraz w samym Magento, więc nie jestem pewien, co powoduje to wyłączenie. Używam wersji 1.7.0.2.Magento ouputting niepoprawna data i godzina

EDIT

Ok więc ja nauczyłem się kilku rzeczy.

Magento zawsze ustawia strefę czasową UTC w app/mage.php

line 767: date_default_timezone_set('UTC') 

Więc w zasadzie nie można używać Date(), czas() itd trzeba ustawić swoją strefę czasową w targetting Admin-> System-> Opcje konfiguracji/General-> locale i używać coś takiego:

$now = Mage::getModel('core/date')->timestamp(time()); 
echo date('m/d/y h:i:s', $now); 

zawsze może zastąpić linię 767 z moją strefę czasową, ale nie podoba mi modyfikowania kodu rdzenia. Czy są jakieś inne opcje?

Odpowiedz

7

Preferowaną metodą w Magento wydaje się być użycie obiektów daty i czasu Zend lub Varien zamiast wartości skalarnych, jak w this example. Po uzyskaniu obiektu można go łatwo przekonwertować na inne, niezwiązane z serwerem strefy czasowe, korzystając z połączenia setTimezone.

// a more complete example 
$datetime = Zend_Date::now(); 
// admin controls this output through configuration 
$datetime->setLocale(Mage::getStoreConfig(
      Mage_Core_Model_Locale::XML_PATH_DEFAULT_LOCALE)) 
     ->setTimezone(Mage::getStoreConfig(
      Mage_Core_Model_Locale::XML_PATH_DEFAULT_TIMEZONE)); 
echo $datetime->get(Zend_Date::DATETIME_SHORT); 
+0

pobrano ode mnie ...... –

4

Jeśli zapisywania daty w bazie Magento upewnić się, że są w UTC. Domyślnie Magento zapisuje wszystkie daty jako UTC, ale ma wyświetlać je w lokalnej strefie czasowej.

0

W moim przypadku czas zmienia się w np. system.log, ale także w Scheduler (cronjobs).

Załóżmy, że teraz jest 01.15 czasu rzeczywistego, czas utworzenia w harmonogramie jest zawsze poprawny, więc 01.15 w tym przypadku. Niż czas wykonania jest czasem 01.16, ale często 02.16, więc widzisz mieszankę 01.16 i 02.16, więc czas zmienia się w sposób ciągły.

Kiedy sprawdzam dziennik systemu, widzę to samo, najpierw widzisz razy zwiększające się dla wiadomości takich jak 01.50, 02.45, 03.50 i nagle 02.55 ponownie.

Jest w tym systemie coś, co różni się tym razem, ale gdzie, może mój dostawca coś znajdzie ... ale to nie jest czas systemowy, ma to związek z Magento. Magento zapisuje do dziennika. .

EDIT:

Dlaczego ten problem jest tam nie wiem, ale zmienił czas UTC w Mage.php w mojej strefie Europa/Amsterdam. Teraz wszystkie czasy są poprawne, również w dziennikach.

Ale jeden problem ponownie, gdy planuję cronjob od razu w harmonogramie (rozszerzenie) to zadanie jest zaplanowane 1 godzinę później (inne czasy w harmonogramie są poprawne). Rozszerzenie Copernica działa np. 18.00 (nie przez Scheduler) i pisze, że jest wykonywany ostatni raz o 17.00 ... żadne inne sklepiki non Magento nie mają tego rodzaju problemów. Baza danych używa także Europe/Amsterdam w php.ini ..

Powiązane problemy