date関数以外でPHPで日付を取得する

PHPで日付を取得する際によく使われるのがdate関数。お馴染みすぎる関数ですが、date_createをうまく利用することでもっと便利に取得することができます。

 

使い方

例えばYYYY.mm.ddの形で日付を表す文字列$date1を変換したい場合は、

 

date_create($date1)->format(“Y.m.d”);

 

と書けば取得できます。
え、それならdateの方が楽じゃんと思われるかもしれませんが、->が示す通りdate_createで作られた日付というのはオブジェクトとなっています。そしてこのオブジェクト、なんと比較できるのです。

例えば二つの日付の差を知りたい場合…

 

$diff = date_diff(date_create(date1), date_create(date2));return $diff->format(“m日”);

 

とすれば差の日数を取得できます。また例えば$date1の十日後を表示したい場合は、

 

return date_create($date1, ‘+10 day’)->format(“Y.m.d”);

 

とすれば一発で取得できます。便利。

 

利点

date関数はUNIXタイムスタンプからの変換しか受け付けません。したがって、日付文字列を一度strtotimeを使ってUNIXタイムスタンプに戻した後date関数を使う必要があります。
date_createはその手間を省き、日付文字列から別の日付文字列へと変換することができます。
またオブジェクト同士の比較(diffだけでなくaddなどもあります)ができたり、上記の通り〇日前とか〇日後とかの日付も一発で取得できるので便利です。もちろん日付だけでなく時間もdate関数と同様に取得できます。

 

詳しくはPHPマニュアルの>>日付・時刻 関数のページを参照してください。