UPDATE:2019年06月18日
PHP 月末の日付を取得したい
月末日を取得
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 5 | <?php //現在月の月末 echo date('Y-m-d',mktime(0,0,0,date('m')+1,0,date('Y'))).'<br>'; echo date('Y-m-d',strtotime('last day of this month')).'<br>'; ?> |
今月の月末(末日)を取得
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() が理解できる日付/時刻のフォーマット文字列
strtotime()関数の引数を「last day of this month」にすることで今月の月末の日付を取得することが出来ます。
実行日時 2019年5月現在 の場合。
1 2 3 | <?php echo date('Y-m-d',strtotime('last day of this month')).'<br>'; ?> |
結果は、
となります。
例では「last day of this month」という書式の英文形式フォーマットですが、strtotime()は以下のような英文形式フォーマットも扱えます。
- 「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() が理解できる英文形式フォーマット文字列
date() + mktime() 今月の月末
date()関数 の第2引数のUNIXタイムスタンプを mktime()関数 で指定し、月末日を取得します。
mktime()関数 は、指定した日時のUNIXタイムスタンプの数値を返します。時、分、秒、月、日、年 と日時の内容を指定します。mktime(時, 分, 秒, 月, 日, 年);
今月の月末日を取得するには、mktime()関数 の引数の
「日」を「0」
「月」を「date('m')+1」
「年」を「date('Y')」
にします。
実行日時 2019年5月現在 の場合。
1 2 3 | <?php echo date('Y-m-d',mktime(0,0,0,date('m')+1,0,date('Y'))).'<br>'; ?> |
結果は、
となります。
DateTimeクラス 今月の月末
DateTimeクラスは様々な日付や時刻を表現できるクラスです。DateTimeクラスを呼び出しオブジェクト(インスタンス)を作成します「 オブジェクト = new DateTime(); 」。DateTimeクラスを呼び出す際に日付や時刻を指定することも出来ます「 オブジェクト = new DateTime('日付/時刻のフォーマット文字列'); 」。省略した場合は現在の日時になります。DateTimeクラスに指定する日時の書式は DateTime('2019-01-02 03:04:05'); というような形です。また、英文形式フォーマット文字列も理解可能で、その他にも様々なフォーマットがあります。興味のある方は以下のページを参照下さい。
DateTimeクラス が理解できる英文形式フォーマット文字列
DateTimeクラス が理解できる日付/時刻のフォーマット文字列
DateTimeクラスのformat()メソッドは、指定した日付や時刻のフォーマット文字列から日時の文字列を返します「 日時の文字列 = オブジェクト->format('日付/時刻のフォーマット文字列'); 」。成功すると日時の文字列を返し、失敗すると FALSE を返します。format()メソッドで指定する日時のフォーマット文字列はdate()関数で指定するフォーマットと同じです。
DateTime format()メソッド が理解できるフォーマット文字列
DateTimeクラスの引数を「last day of this month」にすることで今月の月末の日付を取得することが出来ます。
実行日時 2019年5月現在 の場合。
1 2 3 4 | <?php $objDateTime = new DateTime('last day of this month'); echo $objDateTime->format('Y-m-d'); ?> |
結果は、
となります。
例では「last day of this month」という書式の英文形式フォーマットですが、DateTimeクラスは以下のような英文形式フォーマットも扱えます。
- 「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クラス が理解できる英文形式フォーマット文字列
来月の月末(末日)を取得
date() + strtotime() 来月の月末
タイムスタンプにstrtotime()関数を指定し、strtotime()関数の引数を「last day of next month」にし、来月の月末日を取得します。
実行日時 2019年5月現在 の場合。
1 2 3 | <?php echo date('Y-m-d',strtotime('last day of next month')).'<br>'; ?> |
結果は、
となります。
date() + mktime() 来月の月末
mktime()関数 の引数のdate()関数 の第2引数のUNIXタイムスタンプに mktime()関数 を指定します。
来月の月末日を取得するには、mktime()関数 の引数の
「日」を「0」
「月」を「date('m')+2」
「年」を「date('Y')」
にします。
実行日時 2019年5月現在 の場合。
1 2 3 | <?php echo date('Y-m-d',mktime(0,0,0,date('m')+2,0,date('Y'))).'<br>'; ?> |
結果は、
となります。
DateTimeクラス 来月の月末
DateTimeクラスの引数を「last day of next month」にし、来月の月末日を取得します。
実行日時 2019年5月現在 の場合。
1 2 3 4 | <?php $objDateTime = new DateTime('last day of next month'); echo $objDateTime->format('Y-m-d'); ?> |
結果は、
となります。
再来月の月末(末日)を取得
date() + strtotime() 再来月の月末
タイムスタンプにstrtotime()関数を指定し、strtotime()関数の引数を「last day of +2 month」にし、再来月の月末日を取得します。
実行日時 2019年5月現在 の場合。
1 2 3 | <?php echo date('Y-m-d',strtotime('last day of +2 month')).'<br>'; ?> |
結果は、
となります。
date() + mktime() 再来月の月末
date()関数 の第2引数のUNIXタイムスタンプに mktime()関数 を指定します。
再来月の月末日を取得するには、mktime()関数 の引数の
「日」を「0」
「月」を「date('m')+3」
「年」を「date('Y')」
にします。
実行日時 2019年5月現在 の場合。
1 2 3 | <?php echo date('Y-m-d',mktime(0,0,0,date('m')+3,0,date('Y'))).'<br>'; ?> |
結果は、
となります。
DateTimeクラス 再来月の月末
DateTimeクラスの引数を「last day of +2 month」にし、再来月の月末日を取得します。
実行日時 2019年5月現在 の場合。
1 2 3 4 | <?php $objDateTime = new DateTime('last day of +2 month'); echo $objDateTime->format('Y-m-d'); ?> |
結果は、
となります。
先月の月末(末日)を取得
date() + strtotime() 先月の月末
タイムスタンプにstrtotime()関数を指定し、strtotime()関数の引数を「last day of last month」にし、先月の月末日を取得します。
実行日時 2019年5月現在 の場合。
1 2 3 | <?php echo date('Y-m-d',strtotime('last day of last month')).'<br>'; ?> |
結果は、
となります。
date() + mktime() 先月の月末
date()関数 の第2引数のUNIXタイムスタンプに mktime()関数 を指定します。
先月の月末日を取得するには、mktime()関数 の引数の
「日」を「0」
「月」を「date('m')」
「年」を「date('Y')」
にします。
実行日時 2019年5月現在 の場合。
1 2 3 | <?php echo date('Y-m-d',mktime(0,0,0,date('m'),0,date('Y'))).'<br>'; ?> |
結果は、
となります。
DateTimeクラス 先月の月末
DateTimeクラスの引数を「last day of last month」にし、先月の月末日を取得します。
実行日時 2019年5月現在 の場合。
1 2 3 4 | <?php $objDateTime = new DateTime('last day of last month'); echo $objDateTime->format('Y-m-d'); ?> |
結果は、
となります。
先々月の月末(末日)を取得
date() + strtotime() 先々月の月末
タイムスタンプにstrtotime()関数を指定し、strtotime()関数の引数を「last day of -2 month」にし、先々月の月末日を取得します。
実行日時 2019年5月現在 の場合。
1 2 3 | <?php echo date('Y-m-d',strtotime('last day of -2 month')).'<br>'; ?> |
結果は、
となります。
date() + mktime() 先々月の月末
date()関数 の第2引数のUNIXタイムスタンプに mktime()関数 を指定します。
先々月の月末日を取得するには、mktime()関数 の引数の
「日」を「0」
「月」を「date('m')-1」
「年」を「date('Y')」
にします。
実行日時 2019年5月現在 の場合。
1 2 3 | <?php echo date('Y-m-d',mktime(0,0,0,date('m')-1,0,date('Y'))).'<br>'; ?> |
結果は、
となります。
DateTimeクラス 先々月の月末
DateTimeクラスの引数を「last day of -2 month」にし、先々月の月末日を取得します。
実行日時 2019年5月現在 の場合。
1 2 3 4 | <?php $objDateTime = new DateTime('last day of -2 month'); echo $objDateTime->format('Y-m-d'); ?> |
結果は、
となります。
任意の月の月末(末日)を取得
date() + strtotime() 任意の月の月末
指定日 2020年12月 末日の場合。
タイムスタンプにstrtotime()関数を指定し、strtotime()関数の引数を「2020-12 last day of this month」にし、任意の月(ex.2020年12月)の月末日を取得します。
1 2 3 | <?php echo date('Y-m-d',strtotime('2020-12 last day of this month')).'<br>'; ?> |
となります。
date() + mktime() 任意の月の月末
指定日 2020年12月 末日の場合。
date()関数 の第2引数のUNIXタイムスタンプに mktime()関数 を指定します。
任意の月(ex.2020年12月)の月末日を取得するには、mktime()関数 の引数の
「日」を「0」
「月」を「12+1」
「年」を「2020」
にします。
1 2 3 | <?php echo date('Y-m-d',mktime(0,0,0,12+1,0,2020)).'<br>'; ?> |
となります。
DateTimeクラス 任意の月の月末
指定日 2020年12月 末日の場合。
DateTimeクラスの引数を「2020-12 last day of this month」にし、任意の月(ex.2020年12月)の月末日を取得します。
1 2 3 4 | <?php $objDateTime = new DateTime('2020-12 last day of this month'); echo $objDateTime->format('Y-m-d'); ?> |
となります。
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <h3>今月の月末(末日)を取得</h3> <?php echo date('Y-m-d',mktime(0,0,0,date('m')+1,0,date('Y')))."<br>\n"; echo date('Y-m-d',strtotime('last day of this month'))."<br>\n"; ?> <h3>来月の月末(末日)を取得</h3> <?php echo date('Y-m-d',mktime(0,0,0,date('m')+2,0,date('Y')))."<br>\n"; echo date('Y-m-d',strtotime('last day of next month'))."<br>\n"; ?> <h3>再来月の月末(末日)を取得</h3> <?php echo date('Y-m-d',mktime(0,0,0,date('m')+3,0,date('Y')))."<br>\n"; echo date('Y-m-d',strtotime('last day of +2 month'))."<br>\n"; ?> <h3>先月の月末(末日)を取得</h3> <?php echo date('Y-m-d',mktime(0,0,0,date('m'),0,date('Y')))."<br>\n"; echo date('Y-m-d',strtotime('last day of last month'))."<br>\n"; ?> <h3>先々月の月末(末日)を取得</h3> <?php echo date('Y-m-d',mktime(0,0,0,date('m')-1,0,date('Y')))."<br>\n"; echo date('Y-m-d',strtotime('last day of -2 month'))."<br>\n"; ?> <h3>任意の日付の月末(末日)を取得</h3> 2020年12月の場合<br> <?php echo date('Y-m-d',mktime(0,0,0,12+1,0,2020))."<br>\n"; echo date('Y-m-d',strtotime('2020-12 last day of this month'))."<br>\n"; ?> |
2019-05-31
2019-05-31
来月の月末(末日)を取得
2019-06-30
2019-06-30
再来月の月末(末日)を取得
2019-07-31
2019-07-31
先月の月末(末日)を取得
2019-04-30
2019-04-30
先々月の月末(末日)を取得
2019-03-31
2019-03-31
任意の日付の月末(末日)を取得
2020年12月の場合
2020-12-31
2020-12-31
タグ(=記事関連ワード)
日付
最終更新日:2019年06月18日