PHP 2つの日付の差から経過時間を求めてみる

前にWordpressで使用されていたhuman_time_diffと言う関数を利用して件名の内容を書いたことがあったんですが、引っ越しした時に記事を無くしてしまったので、どうせならもっとサクッと求められる方法でやってみようかなぁと思った次第です。

このように比較的簡単に処理できてしまいます。

この部分で、一つ目の日時と、2つ目の日時の差が求められるわけです。そして、

この部分でフォーマットを設定して表示するという感じになります。%はリテラルで、半角の%に続いて各パラメーターを設置します。パラメーターの詳細はDateInterval::formatに詳しくあります。

例えば、date(“y-m-d”,strtotime(“now”))の”y-m-d”部分のyやらmみたいなもんですね。で、例にもあるのですが例えば年月日を表示する時、まだ1年経っていないとか、1年と10日みたいに1ヶ月過ぎていないような場合は表示したくない場合もありますよね。そこで、$datetime1->diff($datetime2)->format(‘%m’)の部分、日付1と日付2の差を求めてその書式の%m、つまり「月」の部分が0であればと言う条件を作って、trueであれば、xx年xx日と言うような月の部分のない書式を設定しておくこともできます。

PHP 5.2.2 以降では、DateTime オブジェクトを 比較演算子 で比較できるようになりました。

ちなみにPHP5以下の場合はDateTime::diffが利用できないので、1分は60秒、1時間は60×60、1日は60x60x24・・・みたいに設定してやるしかないのですが、できなくもありません。ただ簡単に求められるのであれば使う方が良いかなぁと思う次第です。

スポンサーリンク

シェアする

フォローする