Я много работал с DateTime class
и недавно столкнулся с тем, что, по моему мнению, было ошибкой при добавлении нескольких месяцев. После небольшого исследования выяснилось, что это не ошибка, а работа по назначению. Согласно документации, найденной здесь:
Пример # 2 Остерегайтесь при добавлении или вычитание месяцев
<?php
$date = new DateTime('2000-12-31');
$date->modify('+1 month');
echo $date->format('Y-m-d') . "\n";
$date->modify('+1 month');
echo $date->format('Y-m-d') . "\n";
?>
The above example will output: 2001-01-31 2001-03-03
Может ли кто-нибудь обосновать, почему это не считается ошибкой?
Кроме того, у кого-нибудь есть изящные решения, чтобы исправить проблему и сделать так, чтобы +1 месяц работал как ожидалось, а не как предполагалось?