Magento 时间问题

有时间发现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');

Leave a Reply

您的邮箱地址不会被公开。 必填项已用 * 标注