将来または過去の日付を計算する

PHP:
将来または過去の日付を計算する

How to: (方法)

<?php
// 現在の日付を取得します
$today = new DateTime();

// 10日後の日付を計算します
$interval = new DateInterval('P10D');
$futureDate = $today->add($interval);
echo $futureDate->format('Y-m-d'); // 出力: 10日後の日付

// 10日前の日付を計算します
$interval = new DateInterval('P10D');
$pastDate = $today->sub($interval);
echo $pastDate->format('Y-m-d'); // 出力: 10日前の日付
?>

Deep Dive (詳細な掘り下げ)

PHPで日付計算をするとき、DateTimeクラスがよく使われます。これは、PHP 5.2.0以降で利用可能です。DateIntervalクラスを使って期間を指定することで、非常に直感的に日付を加算または減算できます。この方法は、タイムゾーンの管理や夏時間などの複雑なケースを扱う際にも強力です。

過去には、strtotime()関数とdate()関数の組み合わせもよく使用されましたが、この方法はDateTimeクラスに比べて少し非直感的かつ誤りやすい部分がありました。例えば、strtotime()は非常に強力ですが、複雑な日付計算では想定しない結果を返すことがあります。

実装の詳細を理解することは、サマータイムの影響をはじめとするトラブルに対処する際に有用です。例えば、日付を跨ぐサマータイムの切り替えの際に正しい計算が行われるようにするためです。

See Also (関連情報)