PHP DateTime を使用した月の変更: 意図された動作を明らかにする
PHP の DateTime クラスを操作する場合、月を加算または減算しても、常に結果が得られるとは限りません。期待される結果。ドキュメントで注意されているように、これらの操作は見た目ほど直感的ではないため、「注意してください」。
意図された動作の説明
に示されている例を考えてみましょう。ドキュメント:
$date = new DateTime('2000-12-31'); $date->modify('+1 month'); // Move ahead by 1 month echo $date->format('Y-m-d') . "\n"; // Prints 2001-01-31 $date->modify('+1 month'); // Advance another month echo $date->format('Y-m-d') . "\n"; // Prints 2001-03-03
期待どおりに月が増加するのではなく、結果がジャンプします3月3日まで。これはなぜですか?
内部的には次のようなことが起こります:
期待された動作の取得
期待された動作を達成するには「 1 か月」で日付を丸 1 か月進める場合、いくつかのオプションがあります:
$d = new DateTime('2010-01-31'); $d->modify('first day of next month'); echo $d->format('F'), "\n"; // Correctly prints February
結論
予期しない結果を回避するには、DateTime の月変更操作の意図された動作を理解することが重要です。手動計算または「翌月の初日」機能を使用すると、PHP アプリケーションで目的の日付操作機能を実現できます。
以上がPHP の DateTime::modify(' 1 month') が予期しない結果を生成するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。