【问题标题】:Is the result of strtotime() changed based on the timezone?strtotime() 的结果是否根据时区而改变?
【发布时间】:2012-05-12 03:07:01
【问题描述】:

我在 PHP 中使用 strtotime($datetime) 将文本日期时间描述转换为 Unix 时间戳(参见下面的代码)。

$datetime = '2012-04-17 00:00:00';
$timestamp = strtotime($datetime);

但是,$timestamp 在时区(伦敦)的结果是1334617200,而在时区(北京)它是1334620800。

谁能解释一下为什么会这样? strtotime() 的结果会根据时区变化吗?

提前致谢!

【问题讨论】:

  • -1 文档里说的很清楚

标签: php


【解决方案1】:

来自文档:

此函数的每个参数都使用默认时区,除非 时区在该参数中指定。注意不要使用 除非有意为之,否则每个参数中的不同时区。看 date_default_timezone_get() 关于定义默认值的各种方法 时区。

所以是的,它基于时区,除非您在 $datetime 中指定特定时区

【讨论】:

    【解决方案2】:

    是的,没错。考虑了时区。

    另请参阅:PHP - strtotime, specify timezone

    【讨论】:

      【解决方案3】:

      您可以使用:date_default_timezone_set 设置默认时区,否则使用默认系统时区。

      参考:

      http://www.php.net/manual/en/function.date-default-timezone-get.php

      【讨论】:

        【解决方案4】:

        要使用 GMT,请使用 time() 作为第二个参数:

        strtotime($datetime, time())
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-10-03
          • 2011-05-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-04-02
          • 1970-01-01
          相关资源
          最近更新 更多