Важное примечание: Мой вопрос конкретно о DateInterval
. Я НЕ заинтересован в DateTime::modify()
, который предлагается в некоторых ответах. Поэтому это не дубликат.
Я пытаюсь добавить DateInterval
из P1M
(один месяц) к объекту DateTime
, используя объект DateInterval
. К сожалению, это, кажется, приводит к добавлению двух месяцев.
Этот код (обратите внимание на эхо):
<?php
$date = date('m-Y');
echo $date . '<br />';
$date_subonemonth = DateTime::createFromFormat('m-Y', $date);
$date_addonemonth = DateTime::createFromFormat('m-Y', $date);
echo $date_subonemonth->format('m-Y') . '<br />';
echo $date_addonemonth->format('m-Y') . '<br />';
$one_month = new DateInterval('P1M');
$date_subonemonth = $date_subonemonth->sub($one_month)->format('m-Y');
$date_addonemonth = $date_addonemonth->add($one_month)->format('m-Y');
echo $date_subonemonth . '<br />';
echo $date_addonemonth . '<br />';
?>
Выводит следующее:
01-2020
01-2020
01-2020
12-2019
03-2020
последнее эхо должно выводить 02-2020
вместо этого, оно выводит 1-2020
, когда я добавил $one_month
к нему.
Почему это происходит? И как я могу решить эту проблему, используя DateInterval
?