【问题标题】:PHP Timezone incorrect When using time()使用 time() 时 PHP 时区不正确
【发布时间】:2015-09-13 06:39:10
【问题描述】:

我正在使用time() 在我的 PHP 应用程序中记录当前时间。

我在英国,所以我们使用 UTC 时区。这意味着在夏季/冬季,我们从 GMT 时区切换到 BST(即 GMT +1)。问题是,time() 仍然使用 GMT 时区,这意味着它落后了 1 小时。如何使它显示比格林威治标准时间早 1 小时的 BST 时间?

当我回显时间时,它落后了 1 小时。

我的尝试:

  • 添加以下代码:

    date_default_timezone_set("欧洲/伦敦");

    ini_set("date.timezone", "Europe/London");

  • 重新安装 PHP 5.5,以便更新存储时区的扩展。

谢谢

【问题讨论】:

  • time() 会返回一个没有时区上下文的 unix 时间戳。它是 UTC。
  • 那么你知道解决方案吗?
  • 取决于您实际尝试对时间戳做什么。
  • 记录用户在我的数据库中保存对象的时间。因此,为什么我需要时间,而不仅仅是日/月/年。
  • 在这种情况下你不应该对它做任何事情。您应该始终以 UTC 存储日期/时间,然后您可以非常简单地在任何时区输出它们。

标签: php time timezone utc


【解决方案1】:

找到我的解决方案。

问题不在于 time(),因为它只是过了日期几秒钟。

来显示日期时,不要使用gmdate(),而是使用date()

这将考虑您在文档/ini 文件中设置的任何默认时区。

【讨论】:

    【解决方案2】:

    使用gmdate ()

    string gmdate ( string $format [, int $timestamp = time() ] )

    php.netDifferent results for date() and gmdate()

    【讨论】:

    • 实际上,我已经在使用 gmdate 但它无法正常工作。一旦我开始使用 date(),它就会注意我的时区配置
    猜你喜欢
    • 2015-10-19
    • 2014-04-12
    • 2017-05-17
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多