PHPで今日の0時のunixタイムを取得する

2016-10-25

#PHP

PHPで記事の投稿日時などを処理する時、その日時が今日なのか、昨日あるいはそれ以前なのかを判定したい場合があります。
そこで、今日の 0時0分0秒のタイムスタンプを取得・比較することで判定する方法を考えてみます。

strtotime() で今日0時のUnixタイムを取得

strtotime('today') で今日の0時0分0秒のタイムスタンプを取得して、その前後を if() で比較判別する。
取得した値に 3600*24*n を加減算すれば n日前などの判別も可能。

strtotime() では他にも、‘yesterday’ で昨日、‘tomorrow’ で明日など、相対的な書式指定で様々な Unixタイムスタンプを取得できる。また、月末の日を取得する ‘last day of’ も便利。

mktime() で今日0時のUnixタイムを取得

mktime(0,0,0) でも strtotime('today') と同じ結果が得られる。
mktime(8,0,0) で今日の 8時丁度を取得する等、任意の時間を取得することも可能。
文字列の変換が無いので、たぶん一番軽い。

パラメータは mktime(時, 分, 秒, 月, 日, 年) で全て省略可能、省略時は現在の日時になる。

今日かどうかだけを判別する

タイムスタンプを使わずに、date() で今日現在の日付と $unix_time の日付を比較して判定。
簡易的だが、2回 date() で変換するので多少重いかもしれない。

QooQ