我试图创建一个日历,其中日期递增,每个日期是可点击的,这链接到搜索。奇怪的是,日期停止在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/>";
}
}发布于 2015-10-05 15:10:17
这就是问题所在:
$date = date("d-m-Y", strtotime($date) + 86400);您似乎依赖于此来增加日期。通常,那会很好..。但是,由于夏令时间的变化,我们一天有25个小时的时间并不是这样。
我建议您使用日期/时间算术函数(例如,date_add)来增加一天,而不是增加24小时。或者确保所有算法都是在UTC中完成的,因为UTC不会对时区进行任何更改。通常,我会尽量避免执行比实际需要的更多的字符串转换:保持一个变量以惯用的方式表示日期/时间,并对其执行算术--然后在需要时对该变量进行格式化。如果你这么做的话,我认为没有必要在任何地方打电话给strtotime。
https://stackoverflow.com/questions/32951898
复制相似问题