UPDATE:2023年08月17日
PHP 日付 を 加算 する
PHP で日付を加算する
また、DateTimeクラスは、日時の様々な表現が可能で、日付や時間の加算や減算なども行えます。
php.ini に記述する場合
書式 date()
日時の文字列 = date('日付/時刻フォーマット文字列' [,UNIXタイムスタンプ]);
//[ ]省略可(タイムスタンプがない場合現在日時となる)
//返り値は文字列(string)
date() が理解できる日付/時刻フォーマット文字列
書式 strtotime()
指定日時のUNIXタイムスタンプ = strtotime('英文形式 OR 日付/時刻 フォーマット文字列');
//返り値は数値(int)、失敗時は FALSE を返す
strtotime() が理解できる英文形式フォーマット文字列
strtotime() が理解できる日付/時刻のフォーマット文字列
書式 mktime()
指定日時のUNIXタイムスタンプ = mktime(時, 分, 秒, 月, 日, 年);
//返り値は数値(int)、失敗時は FALSE を返す
書式 DateTimeクラス
オブジェクト = new DateTime(['英文形式 OR 日付/時刻のフォーマット文字列']);
//[ ]は省略可能です。
DateTimeクラス が理解できる英文形式フォーマット文字列
DateTimeクラス が理解できる日付/時刻のフォーマット文字列
DateTime format()メソッド が理解できるフォーマット文字列
サンプル
1 2 3 4 | <?php //本日より4日後 echo date('Y年m月d日',mktime(date('H'),date('i'),date('s'),date('n'),date('j')+4,date('Y'))); ?> |
現在の日時から日付や時間を加算する
date() + strtotime() で現在の日時から日付や時間を加算する
date()関数 と strtotime()関数 を組み合わせることで、現在の日付や時間を加算/減算できます。
date()関数 は、指定した「日付や時刻のフォーマット文字列」から、現在や任意の日付や時間の「文字列」を返します「 日時の文字列 = date('日付/時刻のフォーマット文字列'); 」。オプションでUNIXタイムスタンプを指定すると、指定したタイムスタンプに合わせた日時の文字列を返します「 日時の文字列 = date('日付/時刻のフォーマット文字列', UNIXタイムスタンプ); 」。タイムスタンプを省略すると現在日時となります。
date() が理解できる日付/時刻フォーマット文字列
タイムスタンプは、strtotime() で取得できます。strtotime()関数 は、「英文形式で指定された日付や時刻のフォーマット文字列」、または、「日付/時刻のフォーマット文字列」を読み込み、結果をUNIXタイムスタンプの数値として返します。
「 UNIXタイムスタンプ = strtotime('英文形式の日付/時刻フォーマット文字列'); 」
「 UNIXタイムスタンプ = strtotime('日付/時刻フォーマット文字列'); 」
strtotime() に指定する最も一般的な日時の書式は strtotime('2019-01-02 03:04:05'); というような形です。その他にも様々なフォーマットがあります。興味のある方は以下のページを参照下さい。
strtotime() が理解できる英文形式フォーマット文字列
strtotime() が理解できる日付/時刻のフォーマット文字列
現在から1日後の日付を取得 date() + strtotime()
実行日時:2019-01-01 00:00:00
1 2 | 1日後のタイムスタンプ:<?php echo strtotime("+1 day"); ?> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("+1 day")); ?> |
結果は
日時に変換:2019/01/02 00:00:00
となります。
-1 とすれば、1日前 となる。
サンプルでは「+1 day」という形の英文形式フォーマットでしたが、その他にも様々なフォーマットがあります。興味のある方は以下のページを参照下さい。
- 「now(今)」
- 「today(本日)」
- 「tommorw(明日)」
- 「yesterday(昨日)」
- 「+1 day(1日後 -符号もOK)」
- 「+1 week(1週間後 -符号もOK)」
- 「+1 month(1カ月後 -符号もOK)」
- 「+1 year(1年後 -符号もOK)」
- 「+1 seconds(1秒後 -符号もOK)」
- 「+1 min(1分後 -符号もOK)」
- 「+1 hours(1時間後 -符号もOK)」
さらに詳細を知りたい方
strtotime() が理解できる英文形式フォーマット文字列
現在から1週間後の日付を取得 date() + strtotime()
実行日時:2019-01-01 00:00:00
1 2 | 1週間後のタイムスタンプ:<?php echo strtotime("+1 week"); ?> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("+1 week")); ?> |
結果は
日時に変換:2019/01/08 00:00:00
となります。
-1 とすれば、1週間前 となる。
現在から1カ月後の日付を取得 date() + strtotime()
実行日時:2019-01-01 00:00:00
1 2 | 1カ月後のタイムスタンプ:<?php echo strtotime("+1 month"); ?> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("+1 month")); ?> |
結果は
日時に変換:2019/02/01 00:00:00
となります。
-1 とすれば、1カ月前 となる。
現在から+1秒、+2分、+3時間、+4日、+5カ月、+6年 後の日付を取得 strtotime()
実行日時:2019-01-01 00:00:00
1 2 | +1秒、+2分、+3時間、+4日、+5カ月、+6年 後のタイムスタンプ:<?php echo strtotime("+1 seconds +2 min +3 hours +4 day +5 month +6 year"); ?> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("+1 seconds +2 min +3 hours +4 day +5 month +6 year")); ?> |
結果は
日時に変換:2025/06/05 03:02:01
となります。
マイナス – とすれば、1秒、2分、3時間、4日、5カ月、6年 前 となる。
現在から次の木曜日の日付を取得 strtotime()
実行日時:2019-01-01 00:00:00
1 2 | 次の木曜日のタイムスタンプ:<?php echo strtotime("next Thursday"); ?> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("next Thursday")); ?> |
結果は
日時に変換:2019/01/03 00:00:00
となります。
last Thursday とすれば、前の木曜日 となる。
date() + mktime() で現在の日時から日付や時間を加算する
date()関数 は、指定した日付や時刻のフォーマット文字列から、現在や任意の日付や時間の文字列を返します「 日時の文字列 = date('日付/時刻のフォーマット文字列'); 」。オプションでUNIXタイムスタンプを指定すると指定したタイムスタンプに合わせた日時の文字列を返します「 日時の文字列 = date('日付/時刻のフォーマット文字列', UNIXタイムスタンプ); 」。タイムスタンプを省略すると現在日時となります。
date() が理解できる日付/時刻フォーマット文字列
mktime()関数 は、指定した日時のUNIXタイムスタンプの数値を返します。時、分、秒、月、日、年 と日時の内容を指定します。書式は、mktime(時, 分, 秒, 月, 日, 年) となります。
現在から1日後の日付を取得 date() + mktime()
実行日時:2019-01-01 00:00:00
1 2 | 1日後のタイムスタンプ:<?php echo mktime(date('H'),date('i'),date('s'),date('m'),date('d')+1,date('Y')); ?> 日時に変換:<?php echo date('Y/m/d H:i:s',mktime(date('H'),date('i'),date('s'),date('m'),date('d')+1,date('Y'))); ?> |
結果は
日時に変換:2019/01/02 00:00:00
となります。
-1 とすれば、1日前 となる。
現在から1週間後の日付を取得 date() + mktime()
実行日時:2019-01-01 00:00:00
1 2 | 1週間後のタイムスタンプ:<?php echo mktime(date('H'),date('i'),date('s'),date('m'),date('d')+7,date('Y')); ?> 日時に変換:<?php echo date('Y/m/d H:i:s',mktime(date('H'),date('i'),date('s'),date('m'),date('d')+7,date('Y'))); ?> |
結果は
日時に変換:2019/01/08 00:00:00
となります。
-7 とすれば、1週間前 となる。
現在から1カ月後の日付を取得 date() + mktime()
実行日時:2019-01-01 00:00:00
1 2 | 1カ月後のタイムスタンプ:<?php echo mktime(date('H'),date('i'),date('s'),date('m')+1,date('d'),date('Y')); ?> 日時に変換:<?php echo date('Y/m/d H:i:s',mktime(date('H'),date('i'),date('s'),date('m')+1,date('d'),date('Y'))); ?> |
結果は
日時に変換:2019/02/01 00:00:00
となります。
-1 とすれば、1カ月前 となる。
現在から+1秒、+2分、+3時間、+4日、+5カ月、+6年 後の日付を取得 date() + mktime()
実行日時:2019-01-01 00:00:00
1 2 | +1秒、+2分、+3時間、+4日、+5カ月、+6年のタイムスタンプ:<?php echo mktime(date('H')+3,date('i')+2,date('s')+1,date('m')+5,date('d')+4,date('Y')+6); ?> 日時に変換:<?php echo date('Y/m/d H:i:s',mktime(date('H')+3,date('i')+2,date('s')+1,date('m')+5,date('d')+4,date('Y')+6)); ?> |
結果は
日時に変換:2025/06/05 03:02:01
となります。
マイナス – とすれば、1秒、2分、3時間、4日、5カ月、6年 前 となる。
DateTimeクラス で現在の日時から日付や時間を加算する
DateTimeクラスは様々な日付や時刻を表現できるクラスです。DateTimeクラスを呼び出しオブジェクト(インスタンス)を作成します「 オブジェクト = new DateTime(); 」。DateTimeクラスを呼び出す際に日付や時刻を指定することも出来ます。日付を指定する際、英文形式フォーマット文字列で必要な日数を加算することが出来ます。
「 オブジェクト = new DateTime('英文形式のフォーマット文字列'); 」。
日付や時刻の指定は日時の文字列でも可能です。例えば、DateTime('2019-01-02 03:04:05'); というような形です。
「 オブジェクト = new DateTime('日付/時刻のフォーマット文字列'); 」。
日時の指定を省略した場合は現在の日時になります。日時の指定には様々なフォーマットがありますので、興味のある方は以下のページを参照下さい。
DateTimeクラス が理解できる英文形式フォーマット文字列
DateTimeクラス が理解できる日付/時刻のフォーマット文字列
DateTimeクラスのformat()メソッドは、指定した日付や時刻のフォーマット文字列から日時の文字列を返します「 日時の文字列 = オブジェクト->format('日付/時刻のフォーマット文字列'); 」。成功すると日時の文字列を返し、失敗すると FALSE を返します。format()メソッドで指定する日時のフォーマット文字列はdate()関数で指定するフォーマットと同じです。
DateTime format()メソッド が理解できるフォーマット文字列
現在から1日後の日付を取得 DateTimeクラス
実行日時:2019-01-01 00:00:00
1 2 3 4 | <?php $objDateTime = new DateTime('+1 day'); echo '現在から1日後の日付:'.$objDateTime->format('Y/m/d H:i:s'); ?> |
結果は
となります。
-1 とすれば、1日前 となる。
サンプルでは「+1 day」という形の英文形式フォーマットでしたが、その他にも様々なフォーマットがあります。興味のある方は以下のページを参照下さい。
- 「now(今)」
- 「today(本日)」
- 「tommorw(明日)」
- 「yesterday(昨日)」
- 「+1 day(1日後 -符号もOK)」
- 「+1 week(1週間後 -符号もOK)」
- 「+1 month(1カ月後 -符号もOK)」
- 「+1 year(1年後 -符号もOK)」
- 「+1 seconds(1秒後 -符号もOK)」
- 「+1 min(1分後 -符号もOK)」
- 「+1 hours(1時間後 -符号もOK)」
さらに詳細を知りたい方
DateTimeクラス が理解できる英文形式フォーマット文字列
現在から1週間後の日付を取得 DateTimeクラス
実行日時:2019-01-01 00:00:00
1 2 3 4 | <?php $objDateTime = new DateTime('+1 week'); echo '現在から1週間後の日付:'.$objDateTime->format('Y/m/d H:i:s'); ?> |
結果は
となります。
-1 とすれば、1週間前 となる。
現在から1カ月後の日付を取得 DateTimeクラス
実行日時:2019-01-01 00:00:00
1 2 3 4 | <?php $objDateTime = new DateTime('+1 month'); echo '現在から1カ月後の日付:'.$objDateTime->format('Y/m/d H:i:s'); ?> |
結果は
となります。
-1 とすれば、1カ月前 となる。
現在から+1秒、+2分、+3時間、+4日、+5カ月、+6年 後の日付を取得 DateTimeクラス
実行日時:2019-01-01 00:00:00
1 2 3 4 | <?php $objDateTime = new DateTime('+1 seconds +2 min +3 hours +4 day +5 month +6 year'); echo '現在から+1秒、+2分、+3時間、+4日、+5カ月、+6年 後の日付:'.$objDateTime->format('Y/m/d H:i:s'); ?> |
結果は
となります。
マイナス – とすれば、1秒、2分、3時間、4日、5カ月、6年 前 となる。
現在から次の木曜日の日付を取得 DateTimeクラス
実行日時:2019-01-01 00:00:00
1 2 3 4 | <?php $objDateTime = new DateTime('next Thursday'); echo '次の木曜日の日付:'.$objDateTime->format('Y/m/d H:i:s'); ?> |
結果は
となります。
last Thursday とすれば、前の木曜日 となる。
任意の日時から日付や時間を加算する
date() + strtotime() で任意の日時から日付や時間を加算する
strtotime() を使用して任意の日付のUNIXタイムスタンプを取得し、日付を加算して取得します。
任意の日付から1日後の日付を取得 date() + strtotime()
2020-01-01 00:00:00 から1日後の日付を取得。
1 2 | 1日後のタイムスタンプ:<?php echo strtotime("2020-01-01 00:00:00 +1 day"); ?> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("2020-01-01 00:00:00 +1 day")); ?> |
結果は
日時に変換:2020/01/02 00:00:00
となります。
-1 とすれば、1日前 となる。
任意の日付から1週間後の日付を取得 date() + strtotime()
2020-01-01 00:00:00 から1週間後の日付を取得。
1 2 | 1週間後のタイムスタンプ:<?php echo strtotime("2020-01-01 00:00:00 +1 week"); ?> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("2020-01-01 00:00:00 +1 week")); ?> |
結果は
日時に変換:2020/01/08 00:00:00
となります。
-1 とすれば、1週間前 となる。
任意の日付から1カ月後の日付を取得 date() + strtotime()
2020-01-01 00:00:00 から1カ月後の日付を取得。
1 2 | 1カ月後のタイムスタンプ:<?php echo strtotime("2020-01-01 00:00:00 +1 month"); ?> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("2020-01-01 00:00:00 +1 month")); ?> |
結果は
日時に変換:2020/02/01 00:00:00
となります。
-1 とすれば、1カ月前 となる。
任意の日付から+1秒、+2分、+3時間、+4日、+5カ月、+6年 後の日付を取得 date() + strtotime()
2020-01-01 00:00:00 から+1秒、+2分、+3時間、+4日、+5カ月、+6年後の日付を取得。
1 2 | +1秒、+2分、+3時間、+4日、+5カ月、+6年 後のタイムスタンプ:<?php echo strtotime("2020-01-01 00:00:00 +1 seconds +2 min +3 hours +4 day +5 month +6 year"); ?> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("2020-01-01 00:00:00 +1 seconds +2 min +3 hours +4 day +5 month +6 year")); ?> |
結果は
日時に変換:2026/06/05 03:02:01
となります。
マイナス – とすれば、1秒、2分、3時間、4日、5カ月、6年 前 となる。
任意の日付から次の木曜日の日付を取得 date() + strtotime()
2020-01-01 00:00:00 から次の木曜日の日付を取得。
1 2 | 次の木曜日のタイムスタンプ:<?php echo strtotime("2020-01-01 00:00:00 next Thursday"); ?> 日時に変換:<?php echo date('Y/m/d H:i:s',strtotime("2020-01-01 00:00:00 next Thursday")); ?> |
結果は
日時に変換:2020/01/02 00:00:00
となります。
last Thursday とすれば、前の木曜日 となる。
date() + mktime() で任意の日時から日付や時間を加算する
mktime()を使用して指定日時のUNIXタイムスタンプを取得し、タイムスタンプから日付を取得します。
任意の日付から1日後の日付を取得 date() + mktime()
2020-01-01 00:00:00 から1日後の日付を取得。
1 2 | 1日後のタイムスタンプ:<?php echo mktime(0,0,0,1,1+1,2020); ?> 日時に変換:<?php echo date('Y/m/d H:i:s',mktime(0,0,0,1,1+1,2020)); ?> |
結果は
日時に変換:2020/01/02 00:00:00
となります。
-1 とすれば、1日前 となる。
任意の日付から1週間後の日付を取得 date() + mktime()
2020-01-01 00:00:00 から1週間後の日付を取得。
1 2 | 1週間後のタイムスタンプ:<?php echo mktime(0,0,0,1,1+7,2020); ?> 日時に変換:<?php echo date('Y/m/d H:i:s',mktime(0,0,0,1,1+7,2020)); ?> |
結果は
日時に変換:2020/01/08 00:00:00
となります。
-7 とすれば、1週間前 となる。
任意の日付から1カ月後の日付を取得 date() + mktime()
2020-01-01 00:00:00 から1カ月後の日付を取得。
1 2 | 1カ月後のタイムスタンプ:<?php echo mktime(0,0,0,1+1,1,2020); ?> 日時に変換:<?php echo date('Y/m/d H:i:s',mktime(0,0,0,1+1,1,2020)); ?> |
結果は
日時に変換:2020/02/01 00:00:00
となります。
-1 とすれば、1カ月前 となる。
任意の日付から+1秒、+2分、+3時間、+4日、+5カ月、+6年 後の日付を取得 date() + mktime()
2020-01-01 00:00:00 から+1秒、+2分、+3時間、+4日、+5カ月、+6年の日付を取得。
1 2 | +1秒、+2分、+3時間、+4日、+5カ月、+6年 後のタイムスタンプ:<?php echo mktime(0+3,0+2,0+1,1+5,1+4,2020+6); ?> 日時に変換:<?php echo date('Y/m/d H:i:s',mktime(0+3,0+2,0+1,1+5,1+4,2020+6)); ?> |
結果は
日時に変換:2026/06/05 03:02:01
となります。
マイナス – とすれば、1秒、2分、3時間、4日、5カ月、6年 前 となる。
DateTimeクラス で任意の日時から日付や時間を加算する
任意の日付から1日後の日付を取得 DateTimeクラス
指定日:2020-01-01 00:00:00
1 2 3 4 | <?php $objDateTime = new DateTime('2020-01-01 00:00:00 +1 day'); echo '2020-01-01 00:00:00 から1日後の日付:'.$objDateTime->format('Y/m/d H:i:s'); ?> |
結果は
となります。
-1 とすれば、1日前 となる。
例では「2020-01-01 00:00:00」という形式の日付/時刻のフォーマット文字列ですが、DateTimeクラスは以下のような日付フォーマットも扱えます。
- 「02-01-2020(日-月-年)」
- 「02.01.2020(日.月.年)」
- 「01/02/20(月/日/年)」
- 「20-01-02(年-月-日)」
- 「01/02/2020(月/日/年)」
- 「Jan. 02, 2020(3文字英語月. 日, 年)」
- 「02 Jan 2020(日 3文字英語月 年)」
さらに詳細を知りたい方
DateTimeクラス が理解できる日付/時刻のフォーマット文字列
任意の日付から1週間後の日付を取得 DateTimeクラス
指定日:2020-01-01 00:00:00
1 2 3 4 | <?php $objDateTime = new DateTime('2020-01-01 00:00:00 +1 week'); echo '2020-01-01 00:00:00 から1週間後の日付:'.$objDateTime->format('Y/m/d H:i:s'); ?> |
結果は
となります。
-1 とすれば、1週間前 となる。
任意の日付から1カ月後の日付を取得 DateTimeクラス
指定日:2020-01-01 00:00:00
1 2 3 4 | <?php $objDateTime = new DateTime('2020-01-01 00:00:00 +1 month'); echo '2020-01-01 00:00:00 から1カ月後の日付:'.$objDateTime->format('Y/m/d H:i:s'); ?> |
結果は
となります。
-1 とすれば、1カ月前 となる。
任意の日付から+1秒、+2分、+3時間、+4日、+5カ月、+6年 後の日付を取得 DateTimeクラス
指定日:2020-01-01 00:00:00
1 2 3 4 | <?php $objDateTime = new DateTime('2020-01-01 00:00:00 +1 seconds +2 min +3 hours +4 day +5 month +6 year'); echo '2020-01-01 00:00:00 から+1秒、+2分、+3時間、+4日、+5カ月、+6年 後の日付:'.$objDateTime->format('Y/m/d H:i:s'); ?> |
結果は
となります。
マイナス – とすれば、1秒、2分、3時間、4日、5カ月、6年 前 となる。
任意の日付から次の木曜日の日付を取得 DateTimeクラス
指定日:2020-01-01 00:00:00
1 2 3 4 | <?php $objDateTime = new DateTime('2020-01-01 00:00:00 next Thursday'); echo '2020-01-01 00:00:00 から次の木曜日の日付:'.$objDateTime->format('Y/m/d H:i:s'); ?> |
結果は
となります。
last Thursday とすれば、前の木曜日 となる。
タグ(=記事関連ワード)
日付
最終更新日:2023年08月17日