2015-08-28 79 views
-1

我有一個日期字段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數據庫的形式。任何想法如何?

回答

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, 
     )); 
+0

我以前試過,但沒有奏效。這只是在時間格式上有所不同。更重要的是,我確實需要這種格式。 :( –

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時間。

相關問題