2017-05-07 810 views
0

上午的日子不好过我的服务器的时区的NodeJS和MySQL数据库的时区问题

使用的NodeJS作为后端和快速路线服务

我使用改变的时间与正确的服务器: -

的dpkg-重新配置的tzdata

,我检查了服务器的时间,似乎不错

使用

数据

获取当前的时间我和它是正确的为我的国家(沙特阿拉伯)

的问题是,当在数据库中创建记录还是给我在3小时的延迟内错误的时间!

所以数据库时间和服务器是正确的,怎么来创建错误时间的记录?

回答

1

保存在数据库中的时间是UTC。由于沙特阿拉伯时间为UTC + 3h,您会发现时间差距为3小时。我建议你保持UTC时区为原样,并且每当你检索一条记录时,加上3小时的时间将其转换为沙特时间。
同样,如果你想按时间搜索,从你的时间减去3我们要搜索,从而将其转换为UTC时间。

+0

感谢先生的快速反应,那么有没有什么办法来自动处理它,所以任何记录将+3小时内创建的,因为我在做复杂的计算,我需要保存正确的时间而不增加+ 3为记录(应用层) – Faisal

+0

您可以随时更改默认的MySQL时区。但是我强烈建议不要这样做,因为它限制了应用程序的可伸缩性。 – gaganshera

+0

但是,如果你仍然想这样做,请使用类似SET time_zone ='America/New_York' – gaganshera

0

我记得这个修正了一个关于时区的错误。

var timeZoneDifference=(this.date.getTimezoneOffset()-dateFuture.getTimezoneOffset())/60; 
+0

thnak您先生,请指教我如何使用此代码,我想修复应用程序层的时区,所以我想纯数据没有任何问题,thnx – Faisal

+0

这个错误是因为我的24小时博彩老板计时器,当夏令时改变时,GMT偏差与PST不同,持续8小时导致计算错误。正如我发现在线共享世界的原始错误代码,我只想添加此修复程序。 –