【问题标题】:PHP date returning wrong timePHP日期返回错误的时间
【发布时间】:2012-04-13 11:18:54
【问题描述】:

以下脚本在我调用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。所以应该发生的是,对“日期”的第二次调用应该返回第一次调用后 1 小时的时间。它实际上比第一个晚了 5 个小时。

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

我不知道这是 PHP 问题还是服务器问题。

【问题讨论】:

  • 什么是 date_default_timezone_get() 显示之前您更改时区?
  • 时区:欧洲/伦敦
  • 你服务器的date终端命令返回什么?
  • -bash-3.2$ 日期 -> 2012 年 4 月 13 日星期五 12:08:21 BST
  • 无论哪种方式,那个时间都是完全错误的。运行 ntpdate 以更正您的计算机时钟(请参阅我的更新答案)。

标签: php date


【解决方案1】:

只需使用以下代码设置您的区域

   date_default_timezone_set("Asia/Bangkok");//set you countary name from below timezone list
    echo $date = date("Y-m-d H:i:s", time());//now it will show "Asia/Bangkok" or your date time

支持的时区列表 http://www.php.net/manual/en/timezones.php

【讨论】:

  • 那个帮助我在共享主机上显示当前时间一次,只有 time() 并不是真正需要的......谢谢!
【解决方案2】:

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

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

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

【讨论】:

【解决方案3】:

您应该查看 php 手册以了解您所在国家/地区的正确时区。然后在 date_default_timezone_set() 函数中设置。为了澄清,我在这里解释了http://t2techblog.com/php-a-simple-function-for-getting-the-current-nigeria-local-time/

【讨论】:

  • 或许你可以举个例子。
  • 示例:一个简单的函数,它返回我的国家(尼日利亚)的正确时间并带有欢迎信息。
  • 我很抱歉函数和我的文本有点挤在一起。我是新来的.. 仍在弄清楚事情是如何运作的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-26
  • 2014-08-05
  • 1970-01-01
  • 2013-10-11
相关资源
最近更新 更多