Magento 2.3.4 REST API返回时间与后台订单时间相差2小时问题
REST API返回时间与后台显示时间不一致的原因说明
- 这是Magento框架的默认设计逻辑:所有写入数据库的时间字段(包括订单
created_at)统一使用UTC时区存储,REST API默认直接返回数据库中存储的原始UTC时间,不受后台时区配置影响。 - 后台订单列表展示的时间,是系统读取UTC原始时间后,根据你配置的「CET Warsaw」时区转换后的值:CET Warsaw时区夏令时期间为UTC+2,你提到的9月仍处于夏令时时段,因此原始UTC时间
2021-09-21 15:59:34加2小时后,就是后台显示的Sep 21, 2021, 5:59:34 PM,差值完全符合时区规则。 - 针对支付模块可能出现的异常,建议统一时间校验的时区标准:要么所有业务逻辑都采用UTC时间计算,要么拿到API返回的UTC时间后,统一转换为你站点配置的时区时间再做校验,避免时区差导致的校验失败。
- 如果你需要API直接返回和后台显示一致的时区时间,可以通过自定义接口扩展实现,调用Magento原生
\Magento\Framework\Stdlib\DateTime\TimezoneInterface类的convertDateTime方法,即可将存储的UTC时间转换为对应站点配置时区的时间返回。
内容的提问来源于stack exchange,提问作者maya5510
相关产品推荐
相关产品推荐

