订单确认邮件显示夏令时时区错误
Order confirmation email shows wrong timezone in summer time
当我创建订单时,订单确认电子邮件显示错误的时间。
- 仪表板订单列表上的订单创建时间是正确的,只是显示EDT。
- "sales_flat_order"的"created_at"列table将订单时间存储为UTC。
- 订单邮件的时间是"UTC+1"。
- 我必须在订单邮件中显示美国东部时间。
怎么了?
- 冬天的时候,订单邮件显示我"UTC"。
- 2018年3月11日(夏令时)后,订单邮件显示"EDT + 5"(与UTC+1相同)。
即使我更改了 Mage.php、locale.php 和 config.xml 的默认时区,订单确认电子邮件仍向我显示了 EDT+1 日期。
它非常有线。有什么解决办法吗?
我已经匹配了服务器时间、网络服务器时间和商店时区。
- 服务器时区:EDT。
- Web 服务器时区:America/New_York
- magento 时区:America/New_York。
在电子邮件模板中创建的时间 {{var order.getCreatedAtFormated('long')}}
向我们展示了 "UTC+1"。
希望好的解决方案。
评论:我在本地服务器和实时站点上调试了它。
当我得到这些代码的时间结果时,现场网站显示错误的时间。
- $order->getCreatedAt();本地时间输出 - UTC,实时输出 - UTC
- $order->getCreatedAtStoreDate();本地 - EDT,实时 - UTC+1(估计结果必须是 EDT,与本地服务器相同)
所有来源都相同,因为本地来源是从实时站点克隆而来的
现场使用外部数据库(RDS),但本地服务器不是。
\app\code\core\Mage\Sales\Model\Abstract.php
/**
* Get object created at date affected with object store timezone
*
* @return Zend_Date
*/
public function getCreatedAtStoreDate()
{
return Mage::app()->getLocale()->storeDate(
$this->getStore(),
Varien_Date::toTimestamp($this->getCreatedAt()),
true
);
}
解决了这个问题。
在某些模块中,有时区重置代码部分。
结算为"EST"。
用UTC修复后,订单邮件时间更正。
//date_default_timezone_set('EST');
date_default_timezone_set(Mage_Core_Model_Locale::DEFAULT_TIMEZONE);
成功解决。
当我创建订单时,订单确认电子邮件显示错误的时间。
- 仪表板订单列表上的订单创建时间是正确的,只是显示EDT。
- "sales_flat_order"的"created_at"列table将订单时间存储为UTC。
- 订单邮件的时间是"UTC+1"。
- 我必须在订单邮件中显示美国东部时间。
怎么了?
- 冬天的时候,订单邮件显示我"UTC"。
- 2018年3月11日(夏令时)后,订单邮件显示"EDT + 5"(与UTC+1相同)。
即使我更改了 Mage.php、locale.php 和 config.xml 的默认时区,订单确认电子邮件仍向我显示了 EDT+1 日期。 它非常有线。有什么解决办法吗?
我已经匹配了服务器时间、网络服务器时间和商店时区。
- 服务器时区:EDT。
- Web 服务器时区:America/New_York
- magento 时区:America/New_York。
在电子邮件模板中创建的时间 {{var order.getCreatedAtFormated('long')}}
向我们展示了 "UTC+1"。
评论:我在本地服务器和实时站点上调试了它。 当我得到这些代码的时间结果时,现场网站显示错误的时间。
- $order->getCreatedAt();本地时间输出 - UTC,实时输出 - UTC
- $order->getCreatedAtStoreDate();本地 - EDT,实时 - UTC+1(估计结果必须是 EDT,与本地服务器相同)
所有来源都相同,因为本地来源是从实时站点克隆而来的 现场使用外部数据库(RDS),但本地服务器不是。
\app\code\core\Mage\Sales\Model\Abstract.php
/**
* Get object created at date affected with object store timezone
*
* @return Zend_Date
*/
public function getCreatedAtStoreDate()
{
return Mage::app()->getLocale()->storeDate(
$this->getStore(),
Varien_Date::toTimestamp($this->getCreatedAt()),
true
);
}
解决了这个问题。 在某些模块中,有时区重置代码部分。 结算为"EST"。 用UTC修复后,订单邮件时间更正。
//date_default_timezone_set('EST');
date_default_timezone_set(Mage_Core_Model_Locale::DEFAULT_TIMEZONE);
成功解决。