[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 日後')
参考