Magento - 如何在PHP的日期字段中设置时区?

时间:2015-08-28 11:01:26

标签: php magento date timezone

我在Form.php中有一个日期字段,如下所示:

$fieldset->addField('trigger_time', 'date', array(
            'label' => Mage::helper('order_test')->__('Trigger Time'),
            'name'  => 'trigger_time',
            'title' => Mage::helper('order_test')->__('Trigger Time'),
            'image' => $this->getSkinUrl('images/grid-cal.gif'),
            'format' => 'yyyy-MM-dd HH:mm:ss',
            'time' => true,
        ));

以我的语言环境时区GMT+2为例。如果我在表单中输入2015-08-29 12:00:00,我想要保存在数据库中的是2015-08-29 10:00:00,而目前我的Magento的行为正在保存我输入的内容。

即使我在表单中输入本地时间,也希望在数据库中使用GMT时间保存trigger_time。知道怎么样?

2 个答案:

答案 0 :(得分:0)

试试这个

$fieldset->addField('trigger_time', 'date', array(
            'label' => Mage::helper('order_test')->__('Trigger Time'),
            'name'  => 'trigger_time',
            'title' => Mage::helper('order_test')->__('Trigger Time'),
            'image' => $this->getSkinUrl('images/grid-cal.gif'),
            'format' => Mage::app()->getLocale()->getDateTimeFormat(Mage_Core_Model_Locale::FORMAT_TYPE_FULL),
            'time' => true,
        ));

答案 1 :(得分:0)

我终于想通了。

$store_timezone = new DateTimeZone(Mage::getStoreConfig('general/locale/timezone'));
$gmt_timezone = new DateTimeZone('Etc/GMT');
   if (isset($template[$key]) && trim($template[$key]) != '') {
      $dateTime = new DateTime($template['base_time'], $gmt_timezone);
      $dateTime->setTimezone($store_timezone);
      $template['base_time'] = $dateTime->format('Y-m-d H:i:s');
   }

我将这些代码放在我的控制器的saveAction方法中。它将检索区域设置时区并在保存到数据库之前将输入转换为GMT时间。