【问题标题】:PHP strtotime and MySQL UNIX_TIMESTAMP return different integerPHP strtotime 和 MySQL UNIX_TIMESTAMP 返回不同的整数
【发布时间】:2010-09-11 13:04:56
【问题描述】:
echo strtotime('2010-09-11 12:15:01');

返回:1284207301

SELECT UNIX_TIMESTAMP('2010-09-11 12:15:01')

返回:1284200101

为什么不一样?

【问题讨论】:

    标签: php mysql timestamp unix-timestamp


    【解决方案1】:

    答案在php.netarticle about strtotime

    此函数将使用 TZ 环境变量(如果可用)来计算时间戳。自 PHP 5.1.0 起,有更简单的方法来定义所有日期/时间函数中使用的时区。该过程在 date_default_timezone_get() 函数页面中进行了说明。

    短版:strtotime 默认使用您的时区,UNIX_TIMESTAMP 不使用。

    【讨论】:

      【解决方案2】:

      这通常是由于将 PHP 和 MySQL 设置为使用不同的时区,以及如果它们恰好位于不同的服务器中,系统时间会出现差异。

      UNIX 时间戳是自 UTC 时间 1970 年 1 月 1 日午夜 UNIX 纪元以来经过的秒数,因此时区差异会给出不同的时间戳。

      【讨论】:

      • PHP 和 MySQL 都在我的本地开发服务器上,它有 GMT+1 时间。
      • @Richard 是的,但是 PHP 和 mySQL 可能有不同的时区设置
      【解决方案3】:

      1284207301-1284200101 = 7200 -> 2 小时。如此完美的差异不是由于错误,而是时区差异。很可能一个是 UTC/GMT,另一个是 UTC +/- 2

      【讨论】:

        【解决方案4】:

        我的猜测是 Unix 时间是格林威治标准时间,另一个是您的本地时区,两个输出之间正好有 2 小时的差异(7200/60/60)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-01-01
          • 1970-01-01
          • 2013-01-29
          • 1970-01-01
          • 1970-01-01
          • 2016-02-16
          • 1970-01-01
          • 2013-04-11
          相关资源
          最近更新 更多