ホームページ > バックエンド開発 > PHPチュートリアル > PHP で日付に日を正しく追加し、ロールオーバーの問題を回避する方法は?

PHP で日付に日を正しく追加し、ロールオーバーの問題を回避する方法は?

Barbara Streisand
リリース: 2024-11-20 18:33:16
オリジナル
428 人が閲覧しました

How to Correctly Add a Day to a Date in PHP and Avoid Rollover Issues?

日付に日を追加: ロールオーバーの問題を解決する

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート