为什么getdate(0)返回1作为小时


Why is getdate(0) returning 1 as the hour?

我正在使用getdate函数,我打算用它将时间间隔(以秒为单位)解析为天、分钟、小时等。然而,我很惊讶getdate(0)['hours']是1。这是怎么回事?

FWIW,我得到的完整输出是:

Array
(
    [seconds] => 0
    [minutes] => 0
    [hours] => 1
    [mday] => 1
    [wday] => 4
    [mon] => 1
    [year] => 1970
    [yday] => 0
    [weekday] => Thursday
    [month] => January
    [0] => 0
)

January 1, 1970, 00:00 GMT在BST(英国标准时间)为01:00。您的服务器可能已经设置了该时区。

请参阅此WolframAlpha查询。

使用date_default_timezone_set()更改时区,或者使用完全具有时区意识的新DateTime类。

我猜你住在英国。

PHP被配置为使用您所在国家的本地时区。这将导致夏令时的时间为格林尼治标准时间1:00+1小时。

有两种可能的解决方案:

  • 从您使用的时间戳开始减去一小时
  • 将脚本配置为使用GMT。请使用前面提到的函数@pekka

我建议采取第一种解决办法;您的脚本可能需要漂亮地打印各个时间,以及您希望转换为本地时区的时间间隔。