【问题标题】:php strtotime and date functions are using different timezonesphp strtotime 和 date 函数使用不同的时区
【发布时间】:2010-11-26 02:15:03
【问题描述】:

strtotime 是从 1970-01-01 (UTC) 计算的,日期使用我的时区,即 America/New_York 一个简单的例子:

其中时间戳为 0:

var_dump(date('Y-m-d h:i:s', 0)); 

打印:1969-12-31 07:00:00

它应该返回0的地方,它返回

var_dump(strtotime('1969-12-31 07:00:00'));
-43200

现在,显然,我可以将时区添加到日期,即

strtotime($date . ' -5') 

它会起作用的。

但是,我到处都在使用strtotime 函数。

我尝试使用_$ENV['TZ']date_timestamp_get(); 但我无法同步它们。

我还将 php.ini 中的 date.timezone 修改为 America/New_York,但仍然没有。

最后,使用date_timestamp_set('UTC') 强制时区工作正常,两个日期同步。但是,我需要来自服务器的时区。

请指教,我没有想法

【问题讨论】:

  • 我有点困惑你在这里遇到的问题。你到底想做什么?您是否尝试将所有内容都设置为 UTC?

标签: php date timezone


【解决方案1】:
var_dump(date('Y-m-d H:i:s', 0)); 

h != H 日期。现在是晚上 7 点,您正试图从 1969-12-31 07:00:00am 之后获取时间。

【讨论】:

  • 好收获。谢谢你。这不是我想要的,但我想通了。
  • 我的问题是:我尝试使用 echo strtotime('2010-11-05') + 60 * 60 * 24 * 21; 增加 21 天,但这不涉及夏令时(11 月 7 日结束)。因此,当日期转换时,它返回 2010-11-25 23:00:00 而不是 2010-11-26。
  • strtotime('2010-11-05 +21 days') 修复了
  • @hbt:这就是为什么问你的实际问题很重要;-)
猜你喜欢
  • 1970-01-01
  • 2013-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-15
  • 1970-01-01
  • 2015-11-04
  • 1970-01-01
相关资源
最近更新 更多