Создание дат + раз в 15 минут не работает
Мой php код ниже должен создать список следующих дат + время.
// your code goes here
$maxdays = 1;
for($daynumber=0;$daynumber<$maxdays;$daynumber++){
$currentdayval = "+".(string)($daynumber-$maxdays)." days";
$minutes=0;
for($quarter=0;$quarter<24*4;$quarter++){
$minutes += $quarter*15;
$currentminutesval = $minutes." minutes";
$date_sql = date("Y-m-d H:i:s",strtotime($currentdayval." + ".$currentminutesval)); //current date
echo $date_sql. "\n";
}//for $quarter
}//for $daynr
Но результаты ниже показывают, что не каждая дата / время следует за 15 минутами после предыдущей даты / времени. Не уверен, где мой код идет не так (?)
2014-06-26 12:44:15
2014-06-26 12:59:15
2014-06-26 13:29:15
2014-06-26 14:14:15
2014-06-26 15:14:15
2014-06-26 16:29:15
2014-06-26 17:59:15
2014-06-26 19:44:15
2014-06-26 21:44:15
2014-06-26 23:59:15
2014-06-27 02:29:15
2014-06-27 05:14:15
2014-06-27 08:14:15
2014-06-27 11:29:15
3 ответа
Чтобы ваш код работал, вам нужно $minutes
быть 0, потом 15, потом 30, потом 45...
Но потому что вы увеличиваете, вы получаете $minutes
установите 0, затем 15... затем 45 (15+30), затем 90 (15+30+45), затем 150 (15+30+45+60)...
Пытаться $minutes = $quarter * 15;
вместо +=
Вот альтернативный способ, который намного чище, чем ваше текущее решение, и позволяет избежать потенциальных проблем с математикой, как у вас:
$start = new DateTime();
$finish = new DateTime("+{maxdays} days");
$interval = new DateInterval('PT15M');
$period = new DatePeriod($start, $interval, $finish);
foreach ($period as $date) {
printf("%s\n<br>", $date->format('Y-m-d H:i:s'));
}
Он создает ваши начальную и конечную дату / время и ваш интервал в 15 минут. Затем он использует DatePeriod, чтобы просмотреть их и вывести дату и время. Вся математика даты сделана PHP для вас.
Попробуйте заменить
$minutes += $quarter*15;
От
$minutes += 15;