从mysql表中获取datetime列时,我得到了这种奇怪的行为。
以下是该方案:
通知表中有一个日期时间列,其中存储的日期和时间是正确的。
但是当我从php查询数据库时,我得到了错误的时间(UTC + 0:00,应该是UTC - 05:00) 我的系统时区是UTC - 05:00。
即使是PHP的日期函数也会返回正确的日期和时间。
我附上了3张图片,显示了服务器,MySQL和PHP(带问题)的时间
我更改了系统时区,mysql时区和php时区,但问题仍然存在。
服务器是在ubuntu机器上使用php 7.0的nginx。
答案 0 :(得分:1)
时区是您在系统中可以处理的最烦人的事情之一。根据经验,我总是确保所有服务器/容器/配置/等...都设置为UTC并将UTC保存到数据库中。如果需要显示其他内容,可以将帐户/用户时区存储在数据库中,然后在显示信息之前对其进行转换。
令人惊讶的是,我使用PST / PDT作为时区进行了多少项目,并引发了巨大的问题。
另外,我建议使用Carbon作为PHP中DateTime对象的帮助库。 https://github.com/briannesbitt/Carbon