[CakePHP] Timeヘルパーの使い方

複数のタイムゾーンにユーザが分散している会員サイトの場合、ログインしているユーザのタイムゾーンに合わせて時刻表示を補正する必要がある。CakePHPでは、そのためにTimeヘルパーが用意されている。以下ざっくり覚え書き。

ユーザのタイムゾーンに合わせて日時を補正するには

基本的なストーリは以下のとおり。

  • アプリのタイムゾーンをUTCにする
    (app/Config/core.php の date_default_timezone_set(‘UTC’)を有効にする)
  • データベースに保存する時刻はUTCで統一する
  • ユーザのタイムゾーンをデータベースに保存する
    (ログインしているユーザのタイムゾーンをわかるようにする)
  • Timeヘルパーを使って時刻を補正して表示する
    (Timeヘルパーのメソッドの多くにタイムゾーンが指定できる)

Timeヘルパーの使い方

ビュー内ではTimeHelperクラス経由でメソッドを呼び出す。

バージョン2.1からはCakeTimeクラスのグローバルメソッドに含まれるようになったので、任意の場所から呼び出すことが可能。

サンプル

以下Cookbookから。

Timeヘルパーには役立ちそうなメソッドがいろいろ用意されている。

参考サイト

TimeHelper — CakePHP Cookbook 2.x documentation
http://book.cakephp.org/2.0/en/core-libraries/helpers/time.html