如何纠正php日期时间问题


How to correct php date-time problem

我有一个问题与我的日期时间,因为当我使用php date()它是提前1小时到我的文件或mysql服务器。

我使用SSH检查了服务器时间,结果与我的mysql相同。

$curdatetime = date("Y-m-d H:i:s");  //<--- 1hr advance
$sqlqt = 'SELECT NOW() AS time_rs';  //<--- correct result

这是一个服务器设置吗?

测试结果(几分钟前当我发布的问题):日期(日):2011-04-17 06:18:09
MySQL:2011-04-17 05:18:09//<——与ssh

相同

谢谢。

是的,这是由服务器设置引起的。

首先检查date_default_timezone_get返回的内容。然后按偏好顺序检查时区的源代码(文档中给出了它们),直到找到该值的来源。

最后,如果你不想打乱全局设置,要么改变这个设置,要么使用date_default_timezone_set在脚本中设置时区。

您的服务器可能有不同的时区。

你可以通过更改服务器的时区来"修复"这个问题。

最好的解决方案是只使用UTC时间而不使用本地时间。

MySql and UTC:

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html function_utc-time

PHP和UTC:

http://php.net/manual/en/function.gmdate.php

把我的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