我的日期时间有问题,因为当我使用php date()
时,它会提前1小时到我的文件或mysql服务器。
我已经使用ssh检查了服务器时间,结果与我的mysql相同。
$curdatetime = date("Y-m-d H:i:s"); //<--- 1hr advance
$sqlqt = 'SELECT NOW() AS time_rs'; //<--- correct result
这可能是服务器设置吗?。
测试结果(分钟前我发布问题时):
date():2011-04-17 06:18:09
MySQL:2011-04-17 05:18:09 //&lt; - 与ssh相同
感谢。
答案 0 :(得分:1)
是的,它是由服务器设置引起的。
首先查看date_default_timezone_get
返回的内容。然后按优先顺序查看时区的来源(它们在文档中给出),直到找到值的来源。
最后,要么更改该设置,要么使用date_default_timezone_set
在脚本中设置时区,如果您不想弄乱全局设置。
答案 1 :(得分:0)
您的服务器可能有不同的时区。
您可以通过更改服务器的时区来“修复”此问题。
最佳解决方案是仅使用UTC时间而不是当地时间。
MySql和UTC:
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_utc-time
PHP和UTC:
答案 2 :(得分:0)
在这里扔我的2美分......
我有同样的问题(2小时的偏移),但我的时区设置正确。我终于用下面的代码解决了这个问题。我希望这将有助于将来的某个人......
echo gmdate("Y/m/d H:i:s") . "<br />";
$timestamp = time()+date("Z");
echo gmdate("Y/m/d H:i:s",$timestamp);
那将输出:
2014/07/01 09:57:20
2014/07/01 11:57:20