1. 今月
  2. 先月
  3. 指定された月だけ過去の月
  4. 指定日の月

今月

先月、今月や指定日の、月初や月末を求める方法

  • 今月初め

  • 今月初めを求める場合、"first day of this month"で求める方法と、

    echo date('Y-m-d', strtotime('first day of this month')), PHP_EOL;
    出力フォーマットで日を1とする方法があります。
    echo date('Y-m-1'), PHP_EOL;

    DateTimeを使った場合

    $dt = new Datetime('first day of this month');
    echo $dt->format('Y-m-d'), PHP_EOL;
    または、出力フォーマットで日を1とする方法があります。
    $dt = new Datetime();
    echo $dt->format('Y-m-1'), PHP_EOL;
    今日が2018年10月3日の場合、これらの実行結果は全て同じで、以下になります。
    2018-10-01

  • 今月末

  • 今月の末日を求める場合、"last day of this month" を指定します。

    echo date('Y-m-d', strtotime('last day of this month'));

    DateTimeを使った場合

    $dt = new Datetime('last day of this month');
    echo $dt->format('Y-m-d'), PHP_EOL;

    今日が2018年10月3日の場合、これらの実行結果は全て同じで、以下になります。

    2018-10-31

先月

  • 先月初め

  • 先月初めを求める場合、"first day of last month"で求める方法と、

    echo date('Y-m-d', strtotime('first day of last month')), PHP_EOL;
    出力フォーマットで日を1とする方法があります。
    echo date('Y-m-1'), PHP_EOL;

    DateTimeを使った場合

    $dt = new Datetime('first day of last month');
    echo $dt->format('Y-m-d'), PHP_EOL;
    または、出力フォーマットで日を1とする方法があります。
    $dt = new Datetime();
    echo $dt->format('Y-m-1'), PHP_EOL;
    今日が2018年10月3日の場合、これらの実行結果は全て同じで、以下になります。
    2018-09-01

  • 先月末

  • 先月末を求める場合、"last day of last month" を指定します。

    echo date('Y-m-d', strtotime('last day of last month'));

    DateTimeを使った場合

    $dt = new Datetime('last day of last month');
    echo $dt->format('Y-m-d'), PHP_EOL;

    今日が2018年10月3日の場合、これらの実行結果は全て同じで、以下になります。

    2018-09-31

指定された月だけ過去の月

  • 指定月過去の月初め

  • 指定された月だけ過去の月初めを求める場合、"first day of [数字] months ago"で求められます。

    echo date('Y-m-d', strtotime('first day of 8 months ago')), PHP_EOL;

    DateTimeを使った場合

    $dt = new Datetime('first day of 8 months ago');
    echo $dt->format('Y-m-d'), PHP_EOL;
    または、出力フォーマットで日を1とする方法があります。
    $dt = new Datetime('8 months ago');
    echo $dt->format('Y-m-1'), PHP_EOL;
    今日が2018年10月3日の場合、これらの実行結果は全て同じで、以下になります。
    2018-02-01

  • 指定月過去の月末

  • 指定された月だけ過去の月末を求める場合、"last day of [数字] months ago" を指定します。

    echo date('Y-m-d', strtotime('last day of 8 months ago'));

    DateTimeを使った場合

    $dt = new Datetime('last day of 8 months ago');
    echo $dt->format('Y-m-d'), PHP_EOL;

    今日が2018年10月3日の場合、これらの実行結果は全て同じで、以下になります。

    2018-02-28

指定日の月

  • 指定日の月初め

  • 指定日の月初めを求める場合、"[日付] first day of this month"で求める方法と、

    echo date('Y-m-d', strtotime('2020-2-10 first day of this month')), PHP_EOL;
    出力フォーマットで日を1とする方法があります。
    echo date('Y-m-1', strtotime('2020-2-10'), PHP_EOL;

    DateTimeを使った場合

    $dt = new Datetime('2020-2-10 first day of this month');
    echo $dt->format('Y-m-d'), PHP_EOL;
    または、出力フォーマットで日を1とする方法があります。
    $dt = new Datetime('2020-2-10');
    echo $dt->format('Y-m-1'), PHP_EOL;
    これらの実行結果は、以下になります。
    2020-02-01

  • 指定日の月末

  • 指定日の月末を求める場合、"[日付] last day of this month" を指定します。

    echo date('Y-m-d', strtotime('2020-2-10 last day of this month'));

    DateTimeを使った場合

    $dt = new Datetime('2020-2-10 last day of this month');
    echo $dt->format('Y-m-d'), PHP_EOL;

    これらの実行結果は、以下になります。

    2020-02-29

  • 指定日の月初、月末

  • 指定日の月初と月末を同時に求める場合、DateTimeのmodifyメソッドを使う方法があります。

    $dt = new DateTime('2020-02-10');
    
    // 月初
    $dt->modify('first day of this month');
    echo $dt->format('Y-m-d'), PHP_EOL;
    
    // 月末
    $dt->modify('last day of this month');
    echo $dt->format('Y-m-d'), PHP_EOL;

    これの実行結果は、以下になります。

    2020-02-01
    2020-02-29