PHPで前月の初日と末日のタイムスタンプを取得する

php-prev-monthテクノロジー

今回は、PHP前月の初日の0時0分0秒と、前月の末日の23時59分59秒を取得し、タイムスタンプ形式で変換する方法をご紹介します。
この方法を使えば、前月のデータの集計したい場合などに役に立つと思います。

前月の初日と末日を取得する

現在の日付から前月初日を取得する場合によく使われるのは、strtotime()関数で現在の月から1を引いて、date()関数フォーマットで1日を指定する方法です。

date('Y-m-01', strtotime('-1 month'));

しかし、前月末日を取得する場合は、この方法だと無理があります。
月によって30日や31日あったり、2月については閏年によって28日や29日とバラバラだからです。
そこで便利なのが、strtotime()関数引数に以下の文字列を入れて取得する方法です!

  • 前月の初日
    first day of previous month
  • 前月の末日
    last day of previous month

これだけで簡単に前月の末日も取得することができます!

// 前月の初日
date('Y-m-d', strtotime('first day of previous month'));
// 前月の末日
date('Y-m-d', strtotime('last day of previous month'));

最初と最後の時間を指定する

ただ、このままタイムスタンプ変換してしまうと、現在の時間で取得されてしまいます。
0時0分0秒23時59分59秒を指定するには、そのままdate()関数フォーマットにそのまま書いてあげます。

// 前月の初日の0時0分0秒
date('Y-m-d 00:00:00', strtotime('first day of previous month'));
// 前月の末日の23時59分59秒
date('Y-m-d 23:59:59', strtotime('last day of previous month'));

タイムスタンプに変換する

ここまで来たら後は簡単です。
そもそも、strtotime()文字列からタイムスタンプに変換する関数なので、上記の取得した文字列をもう一度strtotime()関数でタイムスタンプ変換したら完成です!

strtotime(date('Y-m-d 00:00:00', strtotime('first day of previous month')));
strtotime(date('Y-m-d 23:59:59', strtotime('last day of previous month')));

ちなみに、先月ではなく今月にしたい場合は、[previous]を[this]に変えるだけでOKです!

以上!お疲れ様でした!

東京生まれ福岡育ちの文系プログラマー。
テクノロジーの恩恵を感じながら日々精進しています。
広く浅くをモットーに、最近ではプログラミングだけでなく、仮想サーバーからセキュリティ、監視システムなども勉強中です。

管理者をフォローする

コメント

タイトルとURLをコピーしました