rin*_*rce 6 time timezone date magento
如果我在index.php中输出日期/时间echo date('m/d/Y h:i:s a', time());.这是正确的.如果我在那之后的任何地方输出日期/时间,例如在一个扩展名中它完全关闭了4个小时.我已经在php.ini和Magento中正确设置了时区,所以不确定是什么导致它关闭.我正在运行1.7.0.2版.
编辑
好的,我已经学到了一些东西.
Magento总是在app/mage.php中将时区设置为UTC
line 767: date_default_timezone_set('UTC')
Run Code Online (Sandbox Code Playgroud)
所以,基本上你不能使用date(),time()等.你必须在Admin-> System-> Configuration/General-> Locale选项中设置你的目标时区,并使用类似的东西:
$now = Mage::getModel('core/date')->timestamp(time());
echo date('m/d/y h:i:s', $now);
Run Code Online (Sandbox Code Playgroud)
我总是可以用我的时区替换767行,但我不喜欢修改核心代码.那里还有其他选择吗?
Magento中的首选方法似乎是使用Zend或Varien日期时间对象而不是本例中的标量值.获得对象后,您可以通过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);
Run Code Online (Sandbox Code Playgroud)