PHPで数日前/数日後を計算
基準日からの経過した(明日、昨日、週、月、年、秒、分、時間)日時の計算方法 (mktime, strtotime)
PHP
// 現在 2023-06-10
date('Y-m-d');
// echo date('Y-m-d', strtotime('now'));
// ミリ秒含む 2023-06-10 19:38:20.414
date('Y-m-d H:i:s') . '.' . substr(microtime(), 2, 3);
// 明日 2023-06-11
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'));
// 2023-06-11 19:38:20
// date('Y-m-d H:i:s', strtotime('tomorrow'));
// 2023-06-11 00:00:00
// 昨日 2023-06-09
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週間後 2023-06-17
date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') + 7, date('Y')));
date('Y-m-d', strtotime('+1 week'));
// 1ヵ月後 2023-07-10
// 2023/01/31の1ヵ月後(m+1)は2023/03/03
// 2023/03/31の1ヵ月前(m-1)は2023/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日後 2023-12-07
date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') + 180, date('Y')));
date('Y-m-d', strtotime('+180 days'));
// 1年後 2024-06-10
date('Y-m-d', mktime(0, 0, 0, date('m'), date('d'), date('Y') + 1));
date('Y-m-d', strtotime('+1 year'));
// 30秒後 2023-06-10 19:38:50
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分後 2023-06-10 20:08:20
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時間後 2023-06-11 19:38:20
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'));
// 先月初 2023-05-01
date('Y-m-d', mktime(0, 0, 0, date('m') - 1, 1, date('Y')));
// 今月初 2023-06-01
date('Y-m-d', mktime(0, 0, 0, date('m'), 1, date('Y')));
// 来月初 2023-07-01
date('Y-m-d', mktime(0, 0, 0, date('m') + 1, 1, date('Y')));
// 先月末 2023-05-31
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')));
// 今月末 2023-06-30
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');
// 来月末 2023-07-31
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')));
// 先週の水曜日 2023-05-31
date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') - 7 - date('w') + 3, date('Y')));
// 今週の水曜日 2023-06-07
date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') - date('w') + 3, date('Y')));
// 来週の水曜日 2023-06-14
date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') + 7 - date('w') + 3, date('Y')));
// 任意の日時を基準に計算
$y = '2023';
$m = '6';
$d = '10';
date('Y-m-d', mktime(0, 0, 0, $m, $d + 1, $y));
date('Y-m-d', strtotime('2023-06-10 +1 day'));
date('Y-m-d', strtotime('2023-06-10 tomorrow'));
// 年齢 10歳
floor((date('Ymd') - 20130101)/10000);