Magento区域设置/时区问题


Magento Locale/Timezone Issue

我最近从Magento 1.5升级到1.9,我注意到一些日期/时间的奇怪行为。我不能说我在升级之前对此非常关注,所以我会试着回去在1.5上测试一下,以确认它没有发生。到目前为止,我已经在我们的现场制作网站、我们网站的本地开发副本和一个完全没有定制的干净的Magento CE 1.9.1.0上测试了这一点,每次我都得到了相同的结果。我看到的问题是,在某些情况下,客户"创建时间"会被窃听,从而导致Month和Day值被交换。可靠复制的步骤是:

  1. 在前端下订单,使用选项保存您的帐户以备日后使用
  2. 进入管理员并查看客户的帐户。注意"创建时间"。例如,今天,它会说2015年4月2日
  3. 从管理员处,为同一客户创建一个新订单
  4. 下单后,返回客户的账户,查看"创建时间"。请注意,它已更改为"2015年2月4日"
  5. 重复步骤3-4,注意它已将"创建时间"改回"2015年4月2日"

正如我所说,在我们的网站代码和干净的1.9.1.0安装中,我在两个不同的服务器上都会遇到这种情况,这让我相信这是代码中的错误,而不是配置问题,但我不能100%确定。时区、地区等等可能会让人有点困惑,所以我的设置可能有问题。如果你有任何想法或无法复制,请分享你的发现/想法。

谢谢!!

您是否正确设置了Locale选项?

System > Configuration > GENERAL > General > Locale Options (3rd Option)

我也遇到了同样的问题。这个问题的答案是:https://magento.stackexchange.com/questions/18062/customer-created-at-date-off-by-months?lq=1

如果您的文件中没有$this->_getFormat()函数。请参见此处:https://gist.github.com/ihor-sviziev/e96064240d167457709e

记得刷新缓存。

也许,您会遇到以下问题:

Mage_Sales_Model_Order是子类化的,它提供了一个具体的getCreatedAt方法(与魔术方法相反)

您存储在created_at列中的订单数据实际上有Unix时间戳或其他数据?这可能暗示非法的架构更改。要测试模型是否被子类化,请回显get_class($order)-如果模型已被重写以进行诊断,则删除重写。