微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP日期返回错误的时间

调用date_default_timezone_set(“UTC”)后,以下脚本返回错误的时间

<?PHP   
    $timestamp = time();
    echo "<p>Timestamp: $timestamp</p>";

    // This returns the correct time
    echo "<p>". date("Y-m-d H:i:s", $timestamp) ."</p>";


    echo "<p>Now I call 'date_default_timezone_set(\"UTC\")' and echo out the same timestamp.</p>";
    echo "Set timezone = " . date_default_timezone_set("UTC");

    // This returns a time 5 hours in the past
    echo "<p>". date("Y-m-d H:i:s", $timestamp) ."</p>";

?>

服务器上的时区是BST.那么应该发生的是第二次调用’date’应该返回第一次调用后1小时的时间.它实际上比第一个时间晚了5个小时.

我应该注意,服务器最初是使用EDT时区(UTC -4)设置的.这已更改为BST(UTC 1)并且服务器已重新启动.

我无法弄清楚这是PHP问题还是服务器问题.

解决方法:

这几乎肯定不是PHP中的错误,而是在您的本地时区配置中.

最有可能的是,您实际上并未更改系统范围的时区,而只是更改了交互式显示的时区.检查/ etc / localtime是否符合您的期望.在debian系统上,您可以运行tzselect(具有超级用户权限)来设置系统范围的时区.

设置时区后,您可能需要重置时钟.在许多系统上,这应该会随着时间的推移自动发生,但您可以通过运行ntpdate -u pool.ntp.org手动完成.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐