Я пытаюсь изменить объект DateTime в функции передается в качестве ссылки:PHP DateTime - изменить ссылку
<?php
$date = new DateTime('2012-02-12');
for($n1 = 0; $n1 < 10; $n1++) {
$date->modify('first day of next month');
setDate($date, 15);
echo $date->format('Y-m-d') . "<br />\n";
}
function setDate(&$date, $day) {
$date->setDate($date->format('Y'), $date->format('m'), $day);
}
?>
Но результат не как ожидалось. У меня что-то не так с этим материалом?
EDIT: Ожидаемый результат: 2012-03-15 2012-04-15 ...
Результат с функцией выше: 2012-03-01 2012-04-01 .. .
Каков ваш результат/ожидаемый результат? – Nick
Я думаю, проблема заключается в том, что результаты всегда показывают первый месяц. Похоже, что код должен установить дату в первый из следующего месяца, а затем установить дату на 15-й. Но когда вы выводите дату, это первый, а не 15-й. Похоже, как только вы используете относительный оператор «первый день следующего месяца», то он начинается с первой. Вы не можете изменить дату с помощью setDate. Вы можете изменить месяц/год, но не дату. – Recognizer
Мне кажется, что 'DateTime :: setDate' не работает после того, как дата уже установлена. Кажется, что это нигде не документировано, и, похоже, он не работает. Странный. – lonesomeday