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

时间:2011-06-22 17:38:57

标签: php datetime

我正在使用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
)

2 个答案:

答案 0 :(得分:5)

BST(英国标准时间)中

January 1, 1970, 00:00 GMT01:00。您的服务器可能已设置该时区。

请参阅this Wolfram Alpha query.

使用date_default_timezone_set()更改时区,或使用完全可识别时区的新DateTime类。

答案 1 :(得分:0)

我的猜测是你住在英国。

PHP配置为使用您所在国家/地区的本地时区。这导致时间为1:00:GMT + 1小时的夏令时。

有两种可能的解决方案:

  • 从您正在使用的时间戳中减去一小时
  • 配置脚本以使用GMT。使用提到的函数@pekka来执行此操作。

我建议第一个解决方案;您的脚本可能需要单独打印个别时间,以及您希望转换为当地时区的时间间隔。