【问题标题】:Possible bug on PHP DateTime modify methodPHP DateTime 修改方法上可能存在的错误
【发布时间】:2022-08-17 19:49:21
【问题描述】:

我正在尝试获取从一个日期到另一个日期的日期和时间列表。

为此,我正在使用 DateTime 类并修改方法以将 1 小时添加到当前 dateTime。但是奇怪的事情发生了,2022/03/27(年/月/日)的 02 小时没有计算出来。

这是测试代码(不是真实代码):

<?php
$from = new DateTime(date(\'2022/03/27 00:00:00\'));
$to = new DateTime(date(\'2022/03/27 23:59:59\'));

do {
  echo $from->format(\'Y/m/d H\') . \"\\n\";
  $from->modify(\'+ 1 hour\');
} while ($from->getTimestamp() < $to->getTimestamp());

这就是结果:

2022/03/27 00
2022/03/27 01
2022/03/27 03
2022/03/27 04
2022/03/27 05
2022/03/27 06
2022/03/27 07
2022/03/27 08
2022/03/27 09
2022/03/27 10
2022/03/27 11
2022/03/27 12
2022/03/27 13
2022/03/27 14
2022/03/27 15
2022/03/27 16
2022/03/27 17
2022/03/27 18
2022/03/27 19
2022/03/27 20
2022/03/27 21
2022/03/27 22
2022/03/27 23

“2022/03/27 02”在哪里?

我在用着:

PHP 7.4.30 (cli) (built: Jun 27 2022 08:11:59)

谢谢。

    标签: php datetime


    【解决方案1】:

    这似乎是因为夏令时在您所在时区的 3 月 27 日凌晨 2 点开始发挥作用。

    $from = new DateTime(date('2022/03/27 00:00:00'));
    $to = new DateTime(date('2022/03/27 23:59:59'));
    
    do {
      echo $from->format('Y/m/d H:i:s I') . "\n"; // with DST indicator
      $from->modify('+ 1 hour');
      } while ($from->getTimestamp() < $to->getTimestamp());
    

    生产

    2022/03/27 00:00:00 0
    2022/03/27 01:00:00 0
    2022/03/27 03:00:00 1
    2022/03/27 04:00:00 1
    2022/03/27 05:00:00 1
    2022/03/27 06:00:00 1
    2022/03/27 07:00:00 1
    2022/03/27 08:00:00 1
    2022/03/27 09:00:00 1
    2022/03/27 10:00:00 1
    2022/03/27 11:00:00 1
    2022/03/27 12:00:00 1
    2022/03/27 13:00:00 1
    2022/03/27 14:00:00 1
    2022/03/27 15:00:00 1
    2022/03/27 16:00:00 1
    2022/03/27 17:00:00 1
    2022/03/27 18:00:00 1
    2022/03/27 19:00:00 1
    2022/03/27 20:00:00 1
    2022/03/27 21:00:00 1
    2022/03/27 22:00:00 1
    2022/03/27 23:00:00 1
    

    【讨论】:

      猜你喜欢
      • 2013-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-04
      • 2021-08-06
      • 2014-06-22
      相关资源
      最近更新 更多