日付に日を追加する際のトラブル: 月ロールオーバーの問題の解決
提供されたコードは日付を 1 日増分しようとしますが、考慮に失敗します月のロールオーバーの場合。この問題と考えられる解決策の詳細な説明は次のとおりです。
問題の理解
PHP の strtotime() 関数は、月のロールオーバーを正しく処理しません。これは、提供されたコードに見られるように、月末近くの日付に 1 日を追加すると明らかです。
$stop_date = date('Y-m-d H:i:s', strtotime("2009-09-30 20:24:00"));
結果の $stop_date は、10 月に進むのではなく、前月の最終日にロールバックされます。 1st.
解決策 1: 文字列連結を使用するトリック
この問題を解決するには、strtotime() を呼び出す前に、元の日付文字列に「1 day」式を手動で追加します。
$stop_date = date('Y-m-d H:i:s', strtotime($stop_date . ' +1 day'));
この手法では、strtotime() に次のことを強制します。適切な日付範囲を解釈し、日付に 1 日を正しく追加します。
解決策 2: を使用します。 DateTime クラス (PHP 5.2.0 )
PHP 5.2.0 では、DateTime クラスを利用できます。
$stop_date = new DateTime('2009-09-30 20:24:00'); $stop_date->modify('+1 day'); echo $stop_date->format('Y-m-d H:i:s');
modify() メソッドは便利な方法を提供します。日付を増分し、月のロールオーバーを自動的に処理します。
以上がPHP で日付に日を正しく追加し、月のロールオーバーを処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。