Я пытаюсь повторить дату за месяц для фиксированного числа раз в цикле.Дата будет отображаться только в том случае, если дата является действительной, в противном случае она будет пропущена.Например, если «2012-02-30 10:10:00» входит в цикл, он будет проигнорирован и пропущен, и он перейдет к следующей итерации.
Приведенный ниже код отлично работает дляstart_date "2011-11-07 10:15:00", но когда я изменяю его на start_date, который комментируется, то есть "2011-11-30 10:15:00", он добавляет 24 часа после пропуска одной итерации.
Я не уверен, где я иду не так.
<?php
//$start_date = "2011-11-30 10:15:00";
$start_date = "2011-11-07 10:15:00";
$no_of_repeat = 15;
$repeat_timing = 0;
for($x=0; $x<$no_of_repeat; $x++) {
$start_date = date('Y-m-d G:i:s',(strtotime($start_date) + ($repeat_timing)));
if(date("m",strtotime($start_date)) != 12) {
$next_month = date('m',strtotime($start_date)) + 1;
$year = date('Y',strtotime($start_date));
} else {
$next_month = 1 ;
$year = date('Y',strtotime($start_date)) + 1;
}
$day = date("d",strtotime($start_date));
$next_date =
$year."-".
$next_month."-".
$day." ".
date("G",strtotime($start_date)).":".
date("i",strtotime($start_date)).":".
date("s",strtotime($start_date));
if(checkdate($next_month,$day,$year))
$repeat_timing = strtotime($next_date) - strtotime($start_date);
else
continue;
echo $next_date."<br />";
}
?>
Ожидаемый результат для закомментированной начальной даты следующий:
2011-12-30 10:15:00
2012-1-30 10:15:00
2012-3-30 10:15:00
2012-4-30 10:15:00
2012-5-30 10:15:00
2012-6-30 10:15:00
2012-7-30 10:15:00
2012-8-30 10:15:00
2012-9-30 10:15:00
2012-10-30 10:15:00
2012-11-30 10:15:00
2012-12-30 10:15:00
2013-1-30 10:15:00