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

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

strtotime()で今日の0時0分0秒のUnixタイムスタンプを取得

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

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

mktime()で上記と同じUnixタイムスタンプを取得

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

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

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

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

if( date('Ymd') == date('Ymd', $unix_time) ){ ... }

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://itpc.blog87.fc2.com/tb.php/174-28fb0a5c
この記事にトラックバック(FC2ブログユーザ用)