特定の日付を元に明日の日付や1週間後の日付、一時間後の時間などの日時の加算や、昨日の日付や昨年の日付などの日時の減算の方法です。
PHPのstrtotime関数やDateTimeクラスを使えば簡単に取得できます。
※先月の日付を取得する際は、月末日の関係でおかしな日付になることもあるので注意!
(last day of previous month)を使ってください。
strtotime関数
strtotime関数の詳細はこちらを参考にしてください。
YYYY-mm-dd
は元となる日付です。
PHPで日付の加算をする
echo date("Y-m-d", strtotime("YYYY-mm-dd 1 day")); // 1日後の日付を取得する場合
echo date("Y-m-d", strtotime("YYYY-mm-dd 1 month")); // 1週間後の日付を取得する場合
echo date("Y-m-d", strtotime("YYYY-mm-dd 1 year")); // 一ヶ月後の日付を取得する場合
echo date("Y-m-d", strtotime("YYYY-mm-dd 1 week")); // 1年後の日付を取得する場合
//例
echo date("Y-m-d", strtotime("1 day")); // 2023-01-31
//又は
echo date("Y-m-d", strtotime("2022-12-31 1 day")); // 2023-01-01
PHPで日付の減算をする
echo date("Y-m-d", strtotime("YYYY-mm-dd -1 day")); // 1日前の日付を取得する場合
echo date("Y-m-d", strtotime("YYYY-mm-dd -1 month")); // 1週間前の日付を取得する場合
echo date("Y-m-d", strtotime("YYYY-mm-dd -1 year")); // 一ヶ月前の日付を取得する場合
echo date("Y-m-d", strtotime("YYYY-mm-dd -1 week")); // 1年前の日付を取得する場合
//例
echo date("Y-m-d", strtotime("-1 day")); // 2022-12-30
//又は
echo date("Y-m-d", strtotime("2022-12-31 -1 day")); // 2022-12-30
DateTimeクラス
DateTimeクラスの詳細はこちらを参考にしてください。
YYYY-mm-dd
は元となる日付です。
PHPで日付の加算をする
$date = new DateTime('now'); // 又は $date = new DateTime('YYYY-mm-dd');
$date->modify('+1 day'); // 1日後の日付を取得する場合
$date->modify('+1 week'); // 1週間後の日付を取得する場合
$date->modify('+1 month'); // 一ヶ月後の日付を取得する場合
$date->modify('+1 year'); // 1年後の日付を取得する場合
$date->modify('+1 day +1 week +1 month +1 year'); // 複数の場合
// 表示フォーマットは自由に変更できます。
echo $date->format('Y-m-d');
//例
$date = new DateTime('2022-12-31');
$date->modify('+1 day');
echo $date->format('Y-m-d'); // 2023-01-01
PHPで日付の減算をする
$date = new DateTime('now'); // 又は $date = new DateTime('YYYY-mm-dd');
$date->modify('-1 day'); // 1日前の日付を取得する場合
$date->modify('-1 week'); // 1週間前の日付を取得する場合
$date->modify('-1 month'); // 一ヶ月前の日付を取得する場合
$date->modify('-1 year'); // 1年前の日付を取得する場合
$date->modify('-1 day -1 week -1 month -1 year'); // 複数の場合
// 表示フォーマットは自由に変更できます。
echo $date->format('Y-m-d');
//例
$date = new DateTime('2022-12-31');
$date->modify('-1 day');
echo $date->format('Y-m-d'); // 2022-12-30
日数算出
2つの日付の日数差を計算(日数のみ)
$date1 = strtotime("2023-02-03");
$date2 = strtotime("2023-02-02");
// 秒数を86400で割ると日数になります
// 86400 = (60 * 60 * 24)
$date3 = ($date1 - $date2) / 86400;
echo $date3 . '日'; // 1日
※UNIXタイムスタンプは、1970年1月1日00時00分00秒UTC(協定世界時と一致する標準時)らの経過秒数です。例えば2019年5月15日1時34分25秒のUNIXタイムスタンプは 1557851665 となります。
フォーマット一覧
フォーマット | 説明 |
---|---|
now | 現在の日時を取得 |
tomorrow | 明日の日付を取得 |
yesterday | 昨日の日付を取得 |
+1 day | 1日後の日時を取得 |
+1 week | 1週間後の日時を取得 |
+1 month | 1ヶ月後の日時を取得 |
+1 year | 1年後の日時を取得 |
+1 hour | 1時間後の日時を取得 |
+1 minute | 1分後の日時を取得 |
+1 second | 1秒後の日時を取得 |
last day of previous month | 先月の末日を取得 |
項目 | フォーマット | 説明 | サンプル |
---|---|---|---|
年 | Y | 西暦(4桁) | 2024 |
y | 西暦(2桁) | 24 | |
L | うるう年→1、普通の年→0 | 0, 1 | |
月 | m | 月(2桁) | 01〜12 |
n | 月(先頭の0なし) | 1〜12 | |
M | 英語(略語) | Jan〜Dec | |
F | 英語 | January〜December | |
日 | d | 日(2桁) | 01〜31 |
j | 日(先頭の0なし) | 1〜31 | |
t | その月の日数 | 28〜31 | |
z | その年の経過日数 | 0〜365 | |
曜日・週 | D | 英語(略語) | Mon〜Sun |
l | 英語 | Sunday〜Saturday | |
w | 曜日(日曜0→土6) | 2 | |
W | ISO 8601 月曜日に 始まる年単位の週番号 |
42 (年の第 42 週目) | |
時間 | H | 24時間単位 | 00〜23 |
G | 24時間単位(先頭の0なし) | 0〜23 | |
h | 12時間単位 | 01〜12 | |
g | 12時間単位(先頭の0なし) | 1〜12 | |
a | 午前/午後(小文字) | am | |
A | 午前/午後(大文字) | AM | |
分 | i | 分(2桁) | 00〜59 |
秒 | s | 秒(2桁) | 00〜59 |
その他の記事
【令和も対応】PHPで和暦⇔西暦変換
https://qiita.com/thiagomatsui/items/57201fea2b4853654bec
参考サイト
https://blog.codecamp.jp/php-datetime-calc
https://www.flatflag.nir87.com/modify-495