日付に日を追加: ロールオーバーの問題を解決する
PHP では、日付に日を追加するのが一般的な操作です。ただし、月末近くの日付に追加すると、予想されるロールオーバーが結果に反映されない可能性があるため、問題が発生します。
元のコードと問題
提供されたコードは、日付「2009-09-30 20:24:00」に 1 日を追加しようとします。残念ながら、結果は予想される「2009-10-01 20:24:00」ではなく、「1970-01-01 17:33:29」という日付を返します。
解決策
問題は、PHP が日付の文字列表現をどのように処理するかにあります。 strtotime を使用して文字列を解析する代わりに、date_create_from_format 関数を使用して DateTime オブジェクトを生成するのが正しいアプローチです。
改良されたコード
<?php $stop_date = '2009-09-30 20:24:00'; $stop_date = date_create_from_format('Y-m-d H:i:s', $stop_date); echo 'date before day adding: ' . $stop_date->format('Y-m-d H:i:s'); $stop_date->modify('+1 day'); echo 'date after adding 1 day: ' . $stop_date->format('Y-m-d H:i:s'); ?>
PHP 5.2.0 の場合
PHP バージョン 5.2.0 以降の場合、次の代替構文を使用できます。
<?php $stop_date = new DateTime('2009-09-30 20:24:00'); echo 'date before day adding: ' . $stop_date->format('Y-m-d H:i:s'); $stop_date->modify('+1 day'); echo 'date after adding 1 day: ' . $stop_date->format('Y-m-d H:i:s'); ?>
この構文は DateTime オブジェクトを直接初期化し、よりオブジェクト指向のアプローチ。
以上がPHP で日付に日を正しく追加し、ロールオーバーの問題を回避する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。