2012-09-30 82 views
6

Si imprimo la fecha/hora en index.php echo date('m/d/Y h:i:s a', time());. Es correcto. Si imprimo la fecha/hora en cualquier lugar después de eso, en una extensión, por ejemplo, está apagado 4 horas exactamente. Establecí la zona horaria correctamente en php.ini y en Magento, por lo que no estoy seguro de qué está causando su desconexión. Estoy ejecutando la versión 1.7.0.2.Magento indicando fecha y hora incorrectas

EDITAR

Ok por lo que he aprendido algunas cosas.

Magento siempre establece la zona horaria a UTC en app/mage.php

line 767: date_default_timezone_set('UTC') 

Así que, básicamente, no se puede utilizar la fecha(), el tiempo(), etc Usted tiene que configurar su zona horaria en la selección de objetivo Administración-> Sistema-> opciones de configuración/General-> Idioma y usar algo como:

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

siempre podía reemplazar a la línea 767 con mi zona horaria, pero no me gusta modificar el código del núcleo. ¿Hay alguna otra opción por ahí?

Respuesta

7

El método preferido en Magento parece ser el uso de objetos de fecha y hora Zend o Varien en lugar de valores escalares como en this example. Una vez que tenga su objeto, puede convertirlo fácilmente en otras zonas horarias que no sean del servidor con una llamada 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 de mí ...... –

4

Si está guardando fechas en la base de datos de Magento, asegúrese de que estén en UTC. De forma predeterminada, Magento guarda todas las fechas como UTC, pero se supone que debe mostrarlas en la zona horaria local.

0

En mi caso, el tiempo varía, p. el system.log pero también en Scheduler (cronjobs).

Digamos que ahora es 01.15 tiempo real, el tiempo creado en el programador siempre es correcto, por lo que 01.15 en este caso. Than the Executed time es a veces 01.16 pero a menudo 02.16, por lo que ves una mezcla de 01.16 y 02.16, por lo que el tiempo varía continuamente.

Cuando reviso el registro del sistema, veo lo mismo, primero ves incrementos de tiempo para mensajes como 01.50, 02.45, 03.50 y de repente 02.55 de nuevo.

Así que hay algo en el sistema que permite variar esta vez, pero donde, tal vez mi proveedor encuentre algo ... pero no es la hora del sistema, tiene que ver con Magento ... Magento escribe en el registro. .

EDIT:

¿por qué este problema es que no sé, pero he cambiado la hora UTC en Mage.php en mi zona de Europa/Amsterdam. Ahora todos los tiempos son correctos, también en los registros.

Pero un problema nuevamente, cuando programo un cronjob inmediatamente en Scheduler (extensión) este trabajo está programado 1 hora más tarde (otras veces en Scheduler son correctas). Una extensión Copernica se ejecuta en, por ejemplo, 18.00 (no a través de Scheduler) y escribe que se ejecutó la última vez a las 17.00 ... no hay otras tiendas web no Magento tienen este tipo de problemas .. la base de datos también está utilizando Europa/Amsterdam en php.ini ..