PHP 日期递增错误

PHP date incrementing error

我正在尝试创建一个日历,其中日期递增并且每个日期都是可点击的,link用于搜索。奇怪的是日期停止在 25th October,并停止递增。即 24th, 25th, 25th, 25th...

日历从哪一天开始并不重要(盯着它看了几天),但在 25th it stops incrementing

感谢任何建议。(间隔之后的第二部分可能无关紧要,但包括在内以防万一link)

for ($i = 1; $i <= 30; $i++){ 
    $date = date("d-m-Y", strtotime($date) + 86400);
    array_push($array_date, $date);
    $separatedate = explode('-', $date);   
    $getday = date("l", strtotime($date));
    print "<button class='submitsearch btn' value=$array_date[$i]>" . ltrim($separatedate[0], '0') . "<br>" . $getday . "<br></button>";

    if (!checkdate($separatedate[1] , $separatedate[0]+1 , $separatedate[2])) {
        $nextmonth = date("F", strtotime($date) + 86400);
       print "<strong>". $nextmonth . "</strong><hr/>";
    }
}

这是问题所在:

$date = date("d-m-Y", strtotime($date) + 86400);

您似乎依赖它来增加日期。通常,这会很好......但由于夏令时的变化,当我们有 25 小时的一天时,情况就不是这样了。

我建议您使用 date/time 算术函数(例如 date_add)来加一天,而不是加 24 小时。或者确保 all 算法在 UTC 中完成,不会有任何时区更改。一般来说,我会尽量避免执行比您真正需要的更多的字符串转换:以惯用的方式保留一个表示 date/time 的变量,然后对其执行算术 - 然后只是 format 那个变量,当你需要的时候。我认为任何地方都不需要调用 strtotime,如果你这样做是对的。