[PHP] 指定日付の○日後の求め方

日時の求め方のまとめです。

指定日付の○日後の求め方

当日の求め方

$today = date("Y-m-d");

もしくは、

$today = date("Y-m-d", time());

です。time()は現在日時のタイムスタンプを返します。date関数では、デフォルト値がtime()です。

当日の○日後の求め方

1日後の場合

$tomorrow = date("Y-m-d", strtotime("+1 day"));

もしくは、

$tomorrow = date("Y-m-d", strtotime("+1 day", time()));

strtotime関数も、date関数と同様に、第2引数は省略可でデフォルトでtime()です。
ですので、strtotime(“+1 day”) で “当日の1日後” のタイムスタンプが求まります。

指定日付の○日後の求め方

指定日を $day とします。7日後を求めます。

$_20190101 = date("20190101");
$_20190108 = date("Y-m-d", strtotime("+1 week", strtotime($_20190101)));

“+7 days” でもできますが、”+1 week” でも可能です。

DateTimeオブジェクトを使うとき

現在日時の求め方

$today = new DateTime();

n日後の求め方

$date = $today->add(new DateInterval('P1D'))

【書式】
 P日付T時間
【例】
 P1D:1日後
 P1Y2M3DT4H5M6S:1年2ヵ月3日、4時間5分6秒

DateIntervalの生成は↓のcreateFromDateStringを使ったほうがよさそう(分かりやすい)です。

$date = $today->add(DateInterval::createFromDateString('1 day'))

参考(createFromDateString)

日付の比較方法

if ($t->format('Y/m/d') == $now->add(DateInterval::createFromDateString('1 day'))->format('Y/m/d'))

日付の差分の求め方

$now = new DateTime();
$target = DateTime::createFromFormat('Y-m-d H:i:s', '2023-11-22 12:30:00');

$diff = $now->diff($target, true)->format('%d 日後')

参考