2012-09-30 17 views
6

Se invio la data/ora in index.php echo date('m/d/Y h:i:s a', time());. È corretto. Se emetto la data/l'ora in un qualsiasi momento, in un'estensione, ad esempio, si spengono esattamente 4 ore. Ho impostato correttamente il fuso orario in php.ini e in Magento stesso, quindi non sono sicuro di cosa lo stia causando. Sto correndo la versione 1.7.0.2.Magento ouputting data e ora errate

EDIT

Ok, quindi ho imparato un paio di cose.

Magento imposta sempre il fuso orario UTC in app/mage.php

line 767: date_default_timezone_set('UTC') 

Quindi, in sostanza, non è possibile utilizzare la data(), il tempo(), ecc È necessario impostare il fuso orario in targetting Admin-> Sistema-> opzioni di configurazione/Generale-> locale e usare qualcosa come:

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

ho sempre potuto sostituire la linea 767 con il mio fuso orario, ma non mi piace la modifica del codice di base. Ci sono altre opzioni là fuori ???

risposta

7

Il metodo preferito in Magento sembra utilizzare gli oggetti data-ora Zend o Varien invece dei valori scalari come in this example. Una volta ottenuto l'oggetto, è possibile convertirlo facilmente in altri fusi orari non server con una chiamata 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

upvote da me ...... –

4

Se si salvano le date nel database di Magento, assicurarsi che siano in UTC. Di default Magento salva tutte le date come UTC ma dovrebbe visualizzarle nel fuso orario locale.

0

Nel mio caso il tempo varia ad es. il system.log ma anche in Scheduler (cronjobs).

Quindi diciamo che ora è 01.15 in tempo reale, l'ora di creazione nello scheduler è sempre corretta, quindi 01.15 in questo caso. Il tempo eseguito è talvolta 01.16 ma spesso 02.16, quindi vedi un mix di 01.16 e 02.16, quindi il tempo varia in modo continuo.

Quando controllo il registro di sistema, vedo lo stesso, prima si vedono i tempi di incremento per messaggi come 01.50, 02.45, 03.50 e improvvisamente 02.55 di nuovo.

Quindi c'è qualcosa nel sistema che lascia varia questa volta, ma dove, forse il mio provider trova qualcosa ... ma non è l'ora del sistema, ha a che fare con Magento ... Magento scrive nel log. .

EDIT:

Perché questo problema è lì non lo so, ma ho cambiato il tempo UTC in Mage.php nella mia zona Europe/Amsterdam. Ora tutte le volte sono corrette, anche nei log.

Ma un problema ancora una volta, quando pianifico un cronjob immediatamente in Scheduler (estensione) questo lavoro è pianificato 1 ora dopo (altre volte in Scheduler sono corrette). Un'estensione Copernica viene eseguita ad es. 18.00 (non via Scheduler) e scrive che è stato eseguito l'ultima volta alle 17.00 ... nessun altro webshop Magento non ha questo tipo di problemi .. il database usa anche Europa/Amsterdam in php.ini ..