Table of contents
In Magento, sometimes the system returns incorrect time even when you have configured the correct timezone in your backend. To solve this issue completely, you must follow all of these steps below.
1. Set up timezone in your Magento backend
Log into your Magento backend, go to System > Configuration > General > Locale Options, and select your current timezone (we use Asia/Bangkok in this example)
2. Change the default timezone in app/Mage.php
Open file app/Mage.php. Find the line:
date_default_timezone_set('UTC');
and replace that with the timezone that you want, for example:
date_default_timezone_set('Asia/Bangkok');
3. Edit file Locale.php
Copy file app/code/core/Mage/Core/Model/Locale.php to app/code/local/Mage/Core/Model/Locale.php then find line 38:
const DEFAULT_TIMEZONE = 'UTC';
and replace that with the timezone that you want, for example:
const DEFAULT_TIMEZONE = 'Asia/Bangkok';
If it still doesn’t work, you have to go deeper in the following function in file app/code/local/Mage/Core/Model/Locale.php:
public function storeDate($store=null, $date=null, $includeTime=false, $format = null) { $timezone = Mage::app()->getStore($store)->getConfig(self::XML_PATH_DEFAULT_TIMEZONE); $date = new Zend_Date($date, $format, $this->getLocale()); $date->setTimezone($timezone); if (!$includeTime) { $date->setHour(0) ->setMinute(0) ->setSecond(0); } return $date; }
Hope this guide be useful for you!
See also:
How to Configure Search Settings in Magento
How to Configure a Content Delivery Network (CDN) in Magento