来自服务器的时间戳与本地不同

Timestamp from server is different than local

我在 mysql 数据库的 table 中有一个 datetime 类型的 createdAt 列和一个时间戳类型的 updatedAt 列。在数据库中,日期是正确的。我查询我的数据库并在 React 中显示值,当来自我本地 xampp 服务器的 运行 时它们正确显示。

我们的 beta 和 live 站点托管在外部 debian-jessie 服务器上,在这两个服务器上,React 中显示的 updatedAt 处于完全不同的时区,相差 7 小时。如果我 运行 在我们的服务器上“约会”,它会显示正确的时区,而且我知道服务器托管在我们的时区这一事实。

如果真的很重要,我们会使用 typeORM/GraphQL/type-graphql 查询数据,然后使用 Apollo 将其发送到 React。

有没有人知道为什么会发生这种情况或解决方案?

您当地的时区可能与服务器的 MySQL 时区不同。理想情况下,MySQL 时区应与您自己的时区相同,以便更有效地处理数据。

您的时区可能设置在 mysql 中的这些地方之一:

在文件 my.cnf 文件中 [mysqld] 部分

default-time-zone='+00:00'

global.time_zone变量

查看它们设置的值:

SELECT @@global.time_zone;

要为其设置一个值,请使用以下任一方法:

SET GLOBAL time_zone = '+8:00';
SET GLOBAL time_zone = 'Europe/Helsinki';
SET @@global.time_zone = '+00:00';

@@session.time_zone变量

SELECT @@session.time_zone;

要使用其中之一进行设置:

SET time_zone = 'Europe/Helsinki';
SET time_zone = "+00:00";
SET @@session.time_zone = "+00:00";