PHP日期递增错误

时间:2015-10-05 15:07:44

标签: php date increment

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

在日历开始的哪一天(盯着它看了几天)并不是25th it stops incrementing

感谢任何建议。(差距之后的第二部分可能无关紧要,但包括它以防万一可能有任何链接)

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/>";
    }
}

1 个答案:

答案 0 :(得分:3)

这是问题所在:

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

您似乎依赖它来增加日期。通常,这样会很好......但是由于夏令时的变化,我们每天工作25小时都不行。

我建议你使用日期/时间算术函数(例如date_add)来增加一天,而不是增加24小时。或者确保所有算术都以UTC格式完成,但不会有任何时区更改。一般来说,我会尽量避免执行比实际需要更多的字符串转换:保持一个以惯用方式表示日期/时间的变量,并对其执行算术 - 然后只需格式该变量什么时候需要。如果你这样做,我认为没有必要在任何地方拨打strtotime