Я хотел бы выполнить цикл от заданной даты по всем дням до текущей даты, но не включая текущую дату.
Собрав воедино код, который я нашел в Интернете, я нашел следующее решение, которое делает почти то, что я хочу:
$date_begin = new DateTime("2005-03-11");
$today = new DateTime("now");
for ($i = $date_begin; $i <= $today; $i->modify("+1 day")) {
...
}
Этот код проходит через все дни с указанной даты до текущей даты, включая текущую дату. Я бы подумал, что чтобы исключить текущую дату, мне просто нужно заменить $i <= $today
на $i < $today
. Но это не работает. Даже если <
вместо <=
, в цикл включается текущая дата. Почему это? Что я неправильно понимаю? И как можно исключить текущую дату?
Спасибо! Замена DateTime("now")
на DateTime("today midnight")
помогла.
Перебирайте период даты с помощью foreach()
вместо того, чтобы каждый раз вручную проверять, находится ли день в пределах диапазона. Как найти даты между двумя указанными датами? Как найти даты между двумя указанными датами? и Создайте иерархический многомерный массив со всеми значениями года, месяца, дня и часа в диапазоне лет
$date_begin = new DateTime("2005-03-11");
$today = new DateTime("now");
$today->modify("00:00:00.0");
for ($i = $date_begin; $i < $today; $i->modify("+1 day")) {
//...
}
Пожалуйста, никогда не публикуйте ответы, содержащие только код, на Stack Overflow.
$date_begin
время полночь.$today
включает текущее время. Вы можете изменить$today
, чтобы установить час, минуту и секунду на 0.