PHPで数日前/数日後を計算
基準日からの経過した(明日、昨日、週、月、年、秒、分、時間)日時の計算方法 (mktime, strtotime)
PHP
// 現在 2024-04-24
date('Y-m-d');
// date('Y-m-d', strtotime('now'));
// $dt = new DateTime('now');
// date('Y-m-d', $dt->format('U'));
// ミリ秒含む 2024-04-24 20:09:15.861
date('Y-m-d H:i:s') . '.' . substr(microtime(), 2, 3);
// 明日 2024-04-25
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'));
$dt = new DateTime('now');
date('Y-m-d', $dt->modify('+1 day'));
// 時間まで含めると結果が異なるので注意
// date('Y-m-d H:i:s', strtotime('+1 day'));
// 2024-04-25 20:09:15
// date('Y-m-d H:i:s', strtotime('tomorrow'));
// 2024-04-25 00:00:00
// 昨日 2024-04-23
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週間後 2024-05-01
date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') + 7, date('Y')));
date('Y-m-d', strtotime('+1 week'));
// 1ヵ月後 2024-05-24
// 2024/01/31の1ヵ月後(m+1)は2024/03/02
// 2024/03/31の1ヵ月前(m-1)は2024/03/02
date('Y-m-d', mktime(0, 0, 0, date('m') + 1, date('d'), date('Y')));
date('Y-m-d', strtotime('+1 month'));
// 180日後 2024-10-21
date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') + 180, date('Y')));
date('Y-m-d', strtotime('+180 days'));
// 1年後 2025-04-24
date('Y-m-d', mktime(0, 0, 0, date('m'), date('d'), date('Y') + 1));
date('Y-m-d', strtotime('+1 year'));
// 30秒後 2024-04-24 20:09:45
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分後 2024-04-24 20:39:15
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時間後 2024-04-25 20:09:15
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'));
// 先月初 2024-03-01
date('Y-m-d', mktime(0, 0, 0, date('m') - 1, 1, date('Y')));
// 今月初 2024-04-01
date('Y-m-d', mktime(0, 0, 0, date('m'), 1, date('Y')));
// 来月初 2024-05-01
date('Y-m-d', mktime(0, 0, 0, date('m') + 1, 1, date('Y')));
// 先月末 2024-03-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')));
// 今月末 2024-04-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');
// 来月末 2024-05-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')));
// 先週の水曜日 2024-04-17
date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') - 7 - date('w') + 3, date('Y')));
// 今週の水曜日 2024-04-24
date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') - date('w') + 3, date('Y')));
// 来週の水曜日 2024-05-01
date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') + 7 - date('w') + 3, date('Y')));
// 任意の日時を基準に計算
$y = '2024';
$m = '4';
$d = '24';
date('Y-m-d', mktime(0, 0, 0, $m, $d + 1, $y));
date('Y-m-d', strtotime('2024-04-24 +1 day'));
date('Y-m-d', strtotime('2024-04-24 tomorrow'));
// 年齢 10歳
floor((date('Ymd') - 20140101)/10000);
strtotimeは8.1から非推奨。