[英]List all days between two defined is back same date PHP
I have try to list all days between two predefined, when i test on my server i have output like this belowe, as you can see 28.10 is two times there, but when i test this on phptester is back me normal output.我试图列出两个预定义之间的所有日子,当我在我的服务器上测试时,我有如下输出,正如你所看到的 28.10 是那里的两次,但是当我在 phptester 上测试时,我恢复了正常输出。 What can be problem here?这里有什么问题? Where i have make mistake?我哪里出错了?
$from = strtotime('2018-10-25');
$to = strtotime('2018-10-30');
for ($i=$from; $i<=$to; $i+=86400)
{
$list[] = date('Y-m-d', $i);
}
echo '<pre>';
print_r($list);
echo '</pre>';
Output输出
Array
(
[0] => 2018-10-25
[1] => 2018-10-26
[2] => 2018-10-27
[3] => 2018-10-28
[4] => 2018-10-28
[5] => 2018-10-29
)
I suspect you are running into the end of daylight savings time, when the clock gets set back an hour. 我怀疑您的时钟已经推迟了一个小时,您的夏令时即将结束。 So adding 24 hours worth of seconds on that day leaves you on the same day. 因此,当天增加24小时的秒数可让您在同一天。
It's better to adjust time by days for example using the DateTime
class: 最好按天调整时间,例如使用DateTime
类:
$start = new DateTime('2018-10-25');
$end = new DateTime('2018-10-29');
while ($start <= $end) {
$list[] = $start->format('Y-m-d');
$start->modify('+1 day');
}
print_r($list);
Output 产量
Array
(
[0] => 2018-10-25
[1] => 2018-10-26
[2] => 2018-10-27
[3] => 2018-10-28
[4] => 2018-10-29
)
$from = strtotime('2018-10-25');
$to = strtotime('2018-10-30');
$list = [];
for ($i=$from; $i<=$to; $i+=86400)
{
if(!in_array(date('Y-m-d', $i), $list))
$list[] = date('Y-m-d', $i);
}
echo '<pre>';
print_r($list);
echo '</pre>';
?>
Try in_array this helps. 尝试使用in_array会有所帮助。 I checked 我检查了
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.