私は非常に奇妙な動作を見ています。PHPの日付時間を加算しないでください
<?php
// If you're running this after Jan 2012, use: new DateTime(date('Y-m-d', strtotime('2012-01-09')));
$month_end_date = new DateTime();
$month_end_date->modify('last day of this month');
$event_end_date = new DateTime('2012-03-15');
if ($event_end_date > $month_end_date) {
// Using this line a day is never added on below and the date stays as 31 Jan 2012
$event_end_date = clone $month_end_date;
// This line allows the ->add() call to work, and gives 1 Feb 2012 as output:
#$event_end_date = new DateTime($month_end_date->format('Y-m-d'));
}
$event_end_date->add(new DateInterval('P1D'));
// Date should now be 1st Feb
echo "Should be 1 Feb: ". $event_end_date->format('Y-m-d');
?>
私のコードを壊すのは->modify('last day of this month')
のようです。私は$month_end_date = new DateTime('2011-01-31');
または
$month_end_date = new DateTime('last day of this month');
$month_end_date = new DateTime($month_end_date->format(DateTime::W3C));
または私の代わり$event_end_date = new DateTime($month_end_date->format('Y-m-d'));
を使用して最初の2行を交換する場合には、2012年2月1日を印刷します。
2回目の変更を行う前にフォーマットを呼び出す必要がありますか?
は "動作しません" 何が起こっているのはかなり曖昧な説明です。詳細を教えてください。 –
投稿を編集しました:壊れたコードから2012-01-01が出力され、2012-02-01が出力されます。 – PeterB