PHPでは、日付と時刻の処理は、毎日の開発における非常に一般的なタスクの1つです。その中で、 Date_Subは非常に実用的な機能であり、 DateTimeオブジェクトから指定された時間間隔を簡単に差し引くことができます。このチュートリアルでは、 Date_Sub関数を使用して、日、月、年、時間などの現在の日付から特定の時間を差し引く方法を詳細に説明します。
date_subは、2つのパラメーターを取得する組み込み関数です。
DateTimeオブジェクト。
DateIntervalオブジェクト。
関数は、 DateTimeオブジェクトからDateIntervalによって定義された時間間隔を差し引き、新しいDateTimeオブジェクトを返すことです。
関数プロトタイプ:
DateTime date_sub ( DateTime $object , DateInterval $interval )
注:PHP 8.0.0から、 Date_Sub()は非推奨としてマークされています。同じ関数を達成するために、datetime :: sub()メソッドを使用することをお勧めします。
まず、現在を表すDateTimeオブジェクトを作成する必要があります。
$date = new DateTime(); // 現在の日付と時刻
次に、時間間隔オブジェクトを作成します。たとえば、10日間を差し引く必要があります。
$interval = new DateInterval('P10D'); // P エクスプレス期間,D 日を示します
DateIntervalの形式はISO 8601です。たとえば、:
「P2Y」 :2年
「P3M」 :3か月
「P15D」 :15日
「PT5H」 :5時間
「PT30M」 :30分
減算操作には、 DateTimeのsub()方法を使用することをお勧めします。
$date->sub($interval);
format()メソッドを使用して、最終時間を出力できます。
echo $date->format('Y-m-d H:i:s');
<?php
// 現在の日付と時刻
$date = new DateTime();
// 時間間隔を作成します,たとえば、減算 10 空
$interval = new DateInterval('P10D');
// この間隔を日付から減算します
$date->sub($interval);
// 出力結果
echo "10 空前的日期是:" . $date->format('Y-m-d H:i:s');
?>
たとえば、あなたのウェブサイトは、記事の公開日の1週間前に表示する必要があります。
$publishDate = new DateTime('2025-05-28');
$interval = new DateInterval('P7D');
$publishDate->sub($interval);
echo $publishDate->format('Y-m-d');
$registerDate = new DateTime();
$interval = new DateInterval('P7D');
$expireDate = clone $registerDate;
$expireDate->add($interval); // 登録時間として無効な時間を設定します +7空
echo "お願いします " . $expireDate->format('Y-m-d H:i:s') . " 以前のアクティブ化アカウント。";
$now = new DateTime();
$interval = new DateInterval('P1M');
$lastMonth = clone $now;
$lastMonth->sub($interval);
// たとえば、訪問統計ページがあります
$url = "https://gitbox.net/logs/view?start=" . $lastMonth->format('Y-m-d') . "&end=" . $now->format('Y-m-d');
echo "過去1か月のアクセスログを表示します:<a href='$url'>$url</a>";
時間形式エラー: DateIntervalの形式は、ISO 8601仕様に厳密に準拠する必要があり、ランダムに記述することはできません。
オブジェクト参照の問題:元のDateTimeオブジェクトを直接変更すると、後続のロジックに影響し、必要に応じてクローンを使用します。
タイムゾーンの問題:一貫性のないデフォルトタイムゾーンは、時間偏差につながる可能性があります。タイムゾーンを手動で設定することをお勧めします。
date_default_timezone_set('Asia/Shanghai');
DateTimeとDateIntervalの組み合わせにより、PHPは開発者に非常に柔軟な時間コンピューティング機能を提供します。 date_sub()またはdatetime :: sub()メソッドの使用は比較的単純ですが、それらは強力であり、ほとんどの日付減算要件を満たすことができます。毎日の開発では、審査、統計、記録などの時間範囲の機能を伴う場合、この関数の使用を習得することは非常に役立ちます。