При создании DateInterval
с помощью метода DateTime::diff
он заполняет не только дни, но и часы, минуты, секунды, месяцы и даже годы в один символ свойства.Вы проверяете односимвольный d
на дни, которые будут считаться днями, оставшимися за один раз, и рассчитываются месяцы.
Попробуйте посмотреть свойство days
, которое фактически заполняется только при использованииdiff
.
Поведение здесь крайне противоречиво.Посетите справочную страницу DateInterval::format
, чтобы получить интересную информацию о том, что происходит, когда вы создаете DateInterval различными способами.