【问题标题】:Php strtotime returns wrong timestampphp strtotime 返回错误的时间戳
【发布时间】:2014-03-06 21:34:54
【问题描述】:

我愿意

strtotime("2008-09-04")

09 是月份,04 是日期,我得到结果:

1220500800

格林威治标准时间 2008 年 9 月 4 日星期四 04:00:00。这 4 个小时从何而来?我应该从 strtotime 获得 1220486400 而不是 1220500800

【问题讨论】:

  • 您是否考虑过时区?
  • 时区。一般提示:如果您正在处理时间并获得一个精确小时数(4:00、3:00、-2:00)的值,那么这几乎总是一个时区问题。
  • 我会记住的,谢谢!

标签: php date strtotime hour


【解决方案1】:

您可以使用函数date_default_timezone_set('UTC'); 全局设置时区,也可以在调用strtotime() 函数时在本地设置时区,例如:

echo strtotime("2008-09-04 +0000"); # 1220486400

【讨论】:

  • 这是 date_default_timezone_set('UTC');对我真的很有帮助。我只是把它放在我的配置文件中,它运行正常。
【解决方案2】:

正如上面的人所说,您可能会遇到时区不匹配的问题。这个函数可能对调试问题有用:http://us3.php.net/date_default_timezone_get

【讨论】:

    【解决方案3】:

    PHP 的 strtotime 最常见的问题是时区和日期时间格式。我将解决这 2 点。

    1. 首先是格式。正如其他人在 stackoverflow 上所建议的那样,使用 iso 8601 日期格式 YYYY-MM-DD (https://www.iso.org/iso-8601-date-and-time-format.html)。例如,2012 年 9 月 27 日表示为 2012-09-27。
    2. 接下来是时区。最重要的是,不要使用任何时区,使用通用协调时间 UTC(这是通用时间,与没有夏令时的 GMT 对应)。 UTC 是全球通用的时间标准。世界计时中心已同意保持其时间尺度密切同步 - 或协调 - 因此名称为协调世界时 (https://www.timeanddate.com/time/aboututc.html)。

    所以现在我们已经清楚了。要将日期时间转换为 unixtimestamp,请执行以下操作:

    // Saves your local set Timezone.
    $saveDDTZ = date_default_timezone_get(); 
    // Sets the timezone to UTC
    date_default_timezone_set("UTC");
    // Converts a date-time into a unix timestamp (= 1560470400).
    $unixTS = strtotime( "2019-06-14 00:00:00 UTC");
    // Restore the timezone
    date_default_timezone_set($saveDDTZ");
    

    要将 unix 时间戳恢复为 Date 使用:

    // Saves your local set Timezone.
    $saveDDTZ = date_default_timezone_get(); 
    // Sets the timezone to UTC
    date_default_timezone_set("UTC");|
    $unixTS = 1560470400
    $dateTime = date("Y-m-d H:i:s", $unixTS);
    // Restore the timezone
    date_default_timezone_set($saveDDTZ");
    

    如果您想将 UTC 日期更改为 TimeZone,请使用 UTC 与 TimeZone 和夏令时的差异。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      • 2019-09-02
      • 2018-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多