突然,NOW()
函数停止了保存服务器的时间,现在我使用'time ago'实现打印数据一团糟。这很奇怪。
我的服务器时间(主机和MySQL)是格林尼治标准时间-07:00(早上7:45)。 我现在的时间是:格林威治标准时间东部夏令时间(上午10:45)-04:00。
我已经使用本地功能证实了服务器的时间。
如果我使用NOW()
保存了一些内容,则该字段中的时间为(2015-09-04 15:45:40
)...它提前8小时,我不知道为什么,它工作正常。< / p>
所以,现在我想知道解决这个问题的最佳方法是什么?谢谢你的任何建议。
更新
我刚刚发现服务器正在使用UNIX时间戳来保存数据库。
So, my current time: -04:00 (13:48)
Server current timezone -07:00 (10:48)
Server UNIX timestamp: GMT (17:48)
不确定此信息是否有助于找到解决方案。我希望它使用服务器当前时区保存内容。
更新2
到目前为止,只找到解决方案是使用date
函数而不是使用托管服务器时间的NOW()
,而不是数据库。
$today = date("Y-m-d H:i:s");
这意味着在我使用的所有脚本中进行更改NOW()
... geez!
答案 0 :(得分:3)
如指出here:
检查my.cnf
部分的default_time_zone='+00:00'
。
执行此查询SELECT @@global.time_zone;
,并根据需要更改值
SET GLOBAL time_zone = '+8:00';
SET GLOBAL time_zone = 'Europe/Helsinki';
SET @@global.time_zone='+00:00';
SELECT @@session.time_zone;
,并根据需要更改值 SET time_zone = 'Europe/Helsinki';
SET time_zone = "+00:00";
SET @@session.time_zone = "+00:00";
答案 1 :(得分:2)
尝试在您的脚本顶部添加date_default_timezone_set,然后使用date代替NOW()
date_default_timezone_set('Europe/London');
echo date('Y-m-d H:i:s');