PHPで数日前/数日後を計算

基準日からの経過した(明日、昨日、週、月、年、秒、分、時間)日時の計算方法 (mktime, strtotime)

PHP

// 現在 2024-07-27 date('Y-m-d'); // ミリ秒含む 2024-07-27 16:41:47.929 date('Y-m-d H:i:s') . '.' . substr(microtime(), 2, 3); // 明日 2024-07-28 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(); $dt->modify('+1 day')->format('Y-m-d'); // 時間まで含めると結果が異なるので注意 // date('Y-m-d H:i:s', strtotime('+1 day')); // 2024-07-28 16:41:47 // date('Y-m-d H:i:s', strtotime('tomorrow')); // 2024-07-28 00:00:00 // 昨日 2024-07-26 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')); $dt = new DateTime(); $dt->modify('-1 day')->format('Y-m-d'); // 1週間後 2024-08-03 date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') + 7, date('Y'))); date('Y-m-d', strtotime('+1 week')); $dt = new DateTime(); $dt->modify('+1 week')->format('Y-m-d'); // 1ヵ月後 2024-08-27 date('Y-m-d', mktime(0, 0, 0, date('m') + 1, date('d'), date('Y'))); date('Y-m-d', strtotime('+1 month')); $dt = new DateTime(); $dt->modify('+1 month')->format('Y-m-d'); // 180日後 2025-01-23 date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') + 180, date('Y'))); date('Y-m-d', strtotime('+180 days')); // 1年後 2025-07-27 date('Y-m-d', mktime(0, 0, 0, date('m'), date('d'), date('Y') + 1)); date('Y-m-d', strtotime('+1 year')); $dt = new DateTime(); $dt->modify('+1 year')->format('Y-m-d'); // 30秒後 2024-07-27 16:42:17 date('Y-m-d H:i:s', mktime(date('H'), date('i'), date('s') + 30, date('m'), date('d'), date('Y') + 1)); date('Y-m-d H:i:s', time() + 30); date('Y-m-d H:i:s', strtotime('+30 sec')); $dt = new DateTime(); $dt->modify('+30 sec')->format('Y-m-d H:i:s'); // 30分後 2024-07-27 17:11:47 date('Y-m-d H:i:s', mktime(date('H'), date('i') + 30, date('s') + 30, date('m'), date('d'), date('Y') + 1)); date('Y-m-d H:i:s', time() + 60 * 30); date('Y-m-d H:i:s', strtotime('+30 min')); $dt = new DateTime(); $dt->modify('+30 min')->format('Y-m-d H:i:s'); // 24時間後 2024-07-28 16:41:47 date('Y-m-d H:i:s', mktime(date('H') + 24, date('i'), date('s') + 30, date('m'), date('d'), date('Y') + 1)); date('Y-m-d H:i:s', time() + 60 * 60 * 24); date('Y-m-d H:i:s', strtotime('+24 hours')); $dt = new DateTime(); $dt->modify('+24 hours')->format('Y-m-d H:i:s'); // 先月初 2024-06-01 date('Y-m-d', mktime(0, 0, 0, date('m') - 1, 1, date('Y'))); // 今月初 2024-07-01 date('Y-m-d', mktime(0, 0, 0, date('m'), 1, date('Y'))); // 来月初 2024-08-01 date('Y-m-d', mktime(0, 0, 0, date('m') + 1, 1, date('Y'))); // 先月末 2024-06-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'))); // 今月末 2024-07-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'); // 来月末 2024-08-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-07-17 date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') - 7 - date('w') + 3, date('Y'))); // 今週の水曜日 2024-07-24 date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') - date('w') + 3, date('Y'))); // 来週の水曜日 2024-07-31 date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') + 7 - date('w') + 3, date('Y'))); // 任意の日時を基準に計算 $y = '2024'; $m = '7'; $d = '27'; date('Y-m-d', mktime(0, 0, 0, $m, $d + 1, $y)); date('Y-m-d', strtotime('2024-07-27 +1 day')); date('Y-m-d', strtotime('2024-07-27 tomorrow')); // 年齢 10歳 floor((date('Ymd') - 20140101)/10000);

strtotimeは8.1から非推奨。

最新の記事

プロフィール

流されるままにウェブ業界で仕事しています。主にLAPP環境でPHPを書いています。最近はjQueryで遊んでいます。
※動作確認について