如何纠正php日期时间问题

时间:2011-04-17 12:11:19

标签: php

我的日期时间有问题,因为当我使用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相同

感谢。

3 个答案:

答案 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:

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

答案 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