今回は、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です!
以上!お疲れ様でした!
- Original:https://minory.org/php-prev-month.html
- Source:Minory
- Author:管理者