PHPで数日前/数日後を計算
基準日からの経過した(明日、昨日、週、月、年、秒、分、時間)日時の計算方法 (mktime, strtotime)
PHP
// 現在 2022-05-20
date('Y-m-d');
// echo date('Y-m-d', strtotime('now'));
// ミリ秒含む 2022-05-20 17:12:00.682
date('Y-m-d H:i:s') . '.' . substr(microtime(), 2, 3);
// 明日 2022-05-21
date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')));
date('Y-m-d', strtotime('+1 day'));
date('Y-m-d', strtotime('tomorrow'));
// 時間まで含めると結果が異なるので注意
// date('Y-m-d H:i:s', strtotime('+1 day'));
// 2022-05-21 17:12:00
// date('Y-m-d H:i:s', strtotime('tomorrow'));
// 2022-05-21 00:00:00
// 昨日 2022-05-19
date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') - 1, date('Y')));
date('Y-m-d', strtotime('-1 day'));
date('Y-m-d', strtotime('yesterday'));
// 1週間後 2022-05-27
date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') + 7, date('Y')));
date('Y-m-d', strtotime('+1 week'));
// 1ヵ月後 2022-06-20
// 2022/01/31の1ヵ月後(m+1)は2022/03/03
// 2022/03/31の1ヵ月前(m-1)は2022/03/03
date('Y-m-d', mktime(0, 0, 0, date('m') + 1, date('d'), date('Y')));
date('Y-m-d', strtotime('+1 month'));
// 180日後 2022-11-16
date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') + 180, date('Y')));
date('Y-m-d', strtotime('+180 days'));
// 1年後 2023-05-20
date('Y-m-d', mktime(0, 0, 0, date('m'), date('d'), date('Y') + 1));
date('Y-m-d', strtotime('+1 year'));
// 30秒後 2022-05-20 17:12:30
date('Y-m-d H:i:s', mktime(date('H'), date('i'), date('s') + 30, date('m'), date('d'), date('Y')));
date('Y-m-d H:i:s', time() + 30);
date('Y-m-d H:i:s', strtotime('+30 sec'));
// 30分後 2022-05-20 17:42:00
date('Y-m-d H:i:s', mktime(date('H'), date('i') + 30, date('s'), date('m'), date('d'), date('Y')));
date('Y-m-d H:i:s', time() + 60 * 30);
date('Y-m-d H:i:s', strtotime('+30 min'));
// 24時間後 2022-05-21 17:12:00
date('Y-m-d H:i:s', mktime(date('H') + 24, date('i'), date('s'), date('m'), date('d'), date('Y')));
date('Y-m-d H:i:s', time() + 60 * 60 * 24);
date('Y-m-d H:i:s', strtotime('+24 hours'));
// 先月初 2022-04-01
date('Y-m-d', mktime(0, 0, 0, date('m') - 1, 1, date('Y')));
// 今月初 2022-05-01
date('Y-m-d', mktime(0, 0, 0, date('m'), 1, date('Y')));
// 来月初 2022-06-01
date('Y-m-d', mktime(0, 0, 0, date('m') + 1, 1, date('Y')));
// 先月末 2022-04-30
date('Y-m-d', mktime(0, 0, 0, date('m'), 0, date('Y')));
date('Y-m-d', strtotime(date('Y-m-01') . ' -1 day'));
date('Y-m-t', mktime(0, 0, 0, date('m') - 1, 1, date('Y')));
// 今月末 2022-05-31
date('Y-m-d', mktime(0, 0, 0, date('m') + 1, 0, date('Y')));
date('Y-m-d', strtotime(date('Y-m-01') . ' +1 month -1 day'));
date('Y-m-t');
// 来月末 2022-06-30
date('Y-m-d', mktime(0, 0, 0, date('m') + 2, 0, date('Y')));
date('Y-m-d', strtotime(date('Y-m-01') . ' +2 month -1 day'));
date('Y-m-t', mktime(0, 0, 0, date('m') + 1, 1, date('Y')));
// 先週の水曜日 2022-05-11
date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') - 7 - date('w') + 3, date('Y')));
// 今週の水曜日 2022-05-18
date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') - date('w') + 3, date('Y')));
// 来週の水曜日 2022-05-25
date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') + 7 - date('w') + 3, date('Y')));
// 任意の日時を基準に計算
$y = '2022';
$m = '5';
$d = '20';
date('Y-m-d', mktime(0, 0, 0, $m, $d + 1, $y));
date('Y-m-d', strtotime('2022-05-20 +1 day'));
date('Y-m-d', strtotime('2022-05-20 tomorrow'));
// 年齢 10歳
floor((date('Ymd') - 20120101)/10000);