恢复PHP和MySQL之间的时间戳差异

时间:2016-09-14 11:29:09

标签: php mysql timezone timestamp

正如标题中已经说过的那样,由于PHP date函数和MySQL NOW()函数,我发现了一个问题(并且这是一个非常大的问题)。

这就是问题,在MySQL表中我有一个名为aggiornamento的列和一个名为idesterno的外部ID列,其工作方式如下:

  • 在插入时,它会被MySQL CURRENT_TIMESTAMP插入,然后插入 idesterno也会被插入
  • 在更新时,它使用PHP idesterno函数
  • 检查aggiornamento并更新date

这里出现了 BIG 问题(相信我,这真的是个大问题):
MySQL NOW()CURRENT_TIMESTAMP返回正确的时间2016-09-04 13:20:00,但PHP也返回正确的另一个日期,即2016-09-04 11:20:00

所以,当我在数据库中插入新记录时,一切都按照我的预期进行,但是,当他得到更新时,就会遇到麻烦。

我发现差异在时区,MySQL有我的(CEST)而PHP没有,即使他们在同一台服务器上(是的,真的搞笑),使用date_default_timezone_get检查。

所以,最后,我需要知道的是:
我知道哪一个已更新,但我不知道CURRENT_TIMESTAMPdate('Y-m-d H:i:s)之间的确切时差。
我猜它最多约1或2个小时(基于夏季/冬季时间)但我不能在不知道我是否做得正确的情况下进行编辑

P.S。表条目由CRON更新,每隔5分钟运行一次

1 个答案:

答案 0 :(得分:0)

所以,
托管已将“欧洲/罗马”时区设置为php.ini,但它会被Wordpress以简单的方式覆盖到UTC。

无论如何,在发现这个之后,我强制更改了PHP脚本中的默认时区,并根据太阳和法定时间更新了错误的数据库记录,增加了1或2个小时。