有时间发现Magento 数据表存放的时间与我们现在的时间不一致。第一种感觉就是错误的,其实不是错误的。
因为有两点:
1. 如果把Magento的时间设置并且使用统一的一个时区。那么如果多个客人在不同的时区去下单,那么客人当前下单的时间与系统的时间将不一致。
2. Magento中默认时区为 UTC , 不能直接使用time(), date()等方法,否则会出现时间差。
3. Magento整个系统中使用UTC时间,即通用协调时(UTC, Universal Time Coordinated)。这样保证在不同的视图或者Store里使用的时间与本地时间一致,在系统配置中可以看到,每个视图或者店铺可以单独设置时区
4. Magento在数据库中存贮的都是UTC时间,在渲染视图的时候会显示当前时间。
Mage::getModel('core/date')->date();
或者在Grid中使用:
$this->addColumn('customer_since', array(
'header' => Mage::helper('customer')->__('Customer Since'),
//这个是指定该字段是时间字段,在视图输出
的时候会自动转成当地时间。
'type' => 'datetime',
'align' => 'center',
'index' => 'created_at',
'gmtoffset' => true
));
提示的一点是在Magento开发中千万别尝试改变 系统时区 ,例如在入口文件 index.php或者启动器Mage.php加入date_default_timezone_set这样的函数,不然你会扰 乱整个系统的时间。
date_default_timezone_set('Asia/Shanghai');
