从mysql返回的PHP datetime是错误的

时间:2018-02-02 18:34:08

标签: php mysql datetime nginx ubuntu-16.04

从mysql表中获取datetime列时,我得到了这种奇怪的行为。

以下是该方案:

通知表中有一个日期时间列,其中存储的日期和时间是正确的。

但是当我从php查询数据库时,我得到了错误的时间(UTC + 0:00,应该是UTC - 05:00) 我的系统时区是UTC - 05:00。

即使是PHP的日期函数也会返回正确的日期和时间。

我附上了3张图片,显示了服务器,MySQL和PHP(带问题)的时间

我更改了系统时区,mysql时区和php时区,但问题仍然存在。

服务器是在ubuntu机器上使用php 7.0的nginx。

请帮我解决问题。 Mysql notifications table Server time PHP date with issue

1 个答案:

答案 0 :(得分:1)

时区是您在系统中可以处理的最烦人的事情之一。根据经验,我总是确保所有服务器/容器/配置/等...都设置为UTC并将UTC保存到数据库中。如果需要显示其他内容,可以将帐户/用户时区存储在数据库中,然后在显示信息之前对其进行转换。

令人惊讶的是,我使用PST / PDT作为时区进行了多少项目,并引发了巨大的问题。

另外,我建议使用Carbon作为PHP中DateTime对象的帮助库。 https://github.com/briannesbitt/Carbon