【问题标题】:php Date() returns wrong day and timephp Date() 返回错误的日期和时间
【发布时间】:2018-05-27 12:31:03
【问题描述】:

我有这段代码来测试发生了什么:

echo date('y-m-d H:i:s');
echo "<br/>";
echo date_default_timezone_get();

结果是:

18-05-28 11:27:11
Asia/Manila

亚洲/马尼拉当前时间是

18-05-27 8:28pm

那么为什么我设置正确的时区会返回错误的日期和时间?

【问题讨论】:

  • 服务器的时钟很可能是错误的。运行 NTP 同步。
  • 语言从操作系统中获取时间,检查您的服务器/计算机时间并确保它是正确的
  • 是的,时间是正确的。丹尼尔。我目前在马尼拉,所以我正在使用这个时间。
  • 我会去找 Niet。
  • 什么是echo exec('date'); 回馈

标签: php


【解决方案1】:

日期使用time() 的默认值,正如 php 手册顶部评论中所指出的,默认为 UTC。

在此处查看 php 手册:https://secure.php.net/manual/en/function.time.php

修改为strftime(‘%F %T’, mktime()) 将解决此问题。

【讨论】:

  • fyi ‘%F’ 是 yyyy-mm-dd 而 ‘%T’ 是 hh:mm:ss
  • 出现这种情况时会抛出通知Warning: date(): It is not safe to rely on the system's timezone settings...
  • 是的。有一种方法可以将本地时间作为数组获取并将其作为字符串传递给 mktime(),尽管这可能有点矫枉过正。
【解决方案2】:

我解决了这个问题。这是窗户的问题。 Windows 实际上使用不同的时区。 所以设置正确的时区会让事情变得正确。

【讨论】:

  • 那么date_default_timezone_set('Asia/Manila'); 应该也解决了这个问题。在代码中显式设置时区是一种很好的做法,因此代码可以在任何服务器上运行。永远不要假设服务器有正确的时区。
  • 我没试过。但我同意这是一个很好的做法。所以我会把它放在我的代码之上。 :) 谢谢。
猜你喜欢
  • 2015-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-05
  • 1970-01-01
相关资源
最近更新 更多