Magento - 如何在PHP的日期字段中设置时区?
问题描述:
我有一个日期字段Form.php
如下:Magento - 如何在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数据库的形式。任何想法如何?
答
试试这个
$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,
));
答
我终于想通了。
$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时间。
我以前试过,但没有奏效。这只是在时间格式上有所不同。更重要的是,我确实需要这种格式。 :( –