如何使用与 MYSQL 服务器不同时区的 Prestashop 突出显示优惠券

问题描述

我有一个问题,几个星期以来我一直无法解决时区问题。

我的服务器配置:

  • Prestashop 配置为巴黎时区。

  • 托管我的 PHPMysqL 的 Debian 服务器配置为伦敦时区。

  • PHPMysqL 配置为伦敦时区。

自动生成优惠券时,其有效期开始日期为巴黎当前时间。

但是,此优惠券在 Prestashop 上没有突出显示(在结帐页面中),因为从 Prestashop 1.7.4 开始,突出显示功能检索 MysqL 服务器的当前时间(使用 Now() 函数)和结束之间的所有优惠券一天。

Prestashop

        $sql_part2 = ' AND cr.date_from < "' . date('Y-m-d H:i:59') . '"
            AND cr.date_to > "' . date('Y-m-d H:i:59') . '"
            ' . ($active ? 'AND cr.`active` = 1' : '') . '
            ' . ($inStock ? 'AND cr.`quantity` > 0' : '');

Prestashop 中突出显示功能 > 1.7.4 :

$sql_part2 = ' AND Now() BETWEEN cr.date_from AND cr.date_to
            ' . ($active ? 'AND cr.`active` = 1' : '') . '
            ' . ($inStock ? 'AND cr.`quantity` > 0' : '');

所以显然有时差,但如果我的 Prestashop 配置的是加州时区,时差会更大。

我该怎么办?覆盖函数?将我的 sql 服务器配置为与我的 Prestashop 处于同一时区?

先谢谢你!

解决方法

检查您的后台,在国际>本地化中,您可以选择 - 覆盖 Prestashop 用于 PHP/SQL 查询的时区,因此如果您可以坚持使用自定义/单个时区,您应该修改一下就好了。