Skip to content
このドキュメントは、CakePHP 2.x の PHP 8 対応フォーク pieceofcake2/cakephp のものです。 フォークについて

TimeHelper ​

class TimeHelper(View $view, array $settings = [])

Time ヘルパーはメッキをかぶせることであなたの時間を節約します。 Time ヘルパーには時間に関する情報を手早く処理するための2つの役割があります。

  1. 時間を形式にそって文字列にすることができます。
  2. 時間を調べることができます。ただし時間を変えることはできません。

Changed in version 2.1

TimeHelper は CakeTime クラスに含まれるようにリファクタリングされました。 これにより、ビューの外からでもより簡単に使えるようになりました。 ビューで使う際は TimeHelper クラスからこれらのメソッドを使うことができます。 また、通常のヘルパーメソッドのように $this->Time->method($args); と 呼び出すこともできます。

ヘルパーの使い方 ​

Time ヘルパーの基本的な使い道は、ユーザーのタイムゾーンにあった日時に時刻を調整することです。 それでは掲示板を例にとりましょう。あなたの掲示板は世界各地からいろんな時間帯にたくさんのユーザーが メッセージを投稿します。時刻を GMT+0 または UTC で保存すると、投稿時刻を簡単に管理できるでしょう。 あなたのアプリケーションで扱うタイムゾーンを確実に GMT+0 へするために、 config/core.php の date_default_timezone_set('UTC'); という記述のコメントアウトを解除します。

次にタイムゾーンのフィールドをユーザーのテーブルに追加して、ユーザーがタイムゾーンを設定できるように 必要な修正を加えます。これでログインしているユーザーのタイムゾーンが分かるようになり、 Time ヘルパーを 使って投稿時刻を補正することができるようになりました。

echo $this->Time->format(
    'F jS, Y h:i A',
    $post['Post']['created'],
    null,
    $user['User']['time_zone'],
);
// GMT+0 での時刻が August 22nd, 2011 11:53 PMの場合、
// タイムゾーンが GMT-8 の場合は August 22nd, 2011 03:53 PM、
// GMT+10 の場合は August 23rd, 2011 09:53 AM が表示されます。

Time ヘルパーのメソッドは多くが $timezone パラメーターを持っています。このパラメーターは タイムゾーンを表す文字列か、 DateTimeZone クラスのインスタンスを渡すことができます。

フォーマット ​

i18nFormat() や nice() など strftime() 形式のフォーマットを受け取るメソッドは、 php81_bc/strftime ライブラリを通じて IntlDateFormatter で日付をフォーマットします。 PHP 本体の strftime() が PHP 8.1 で非推奨になったためです。 月や曜日の名前をローカライズするには intl エクステンションをインストールしてください。 intl がない場合は Symfony のポリフィルが使われますが、ポリフィルは英語にしか対応していません。

Piece of Cake 2 fork

strftime() は IntlDateFormatter を使う実装に置き換えられました。 ほとんどのフォーマットは同じ結果になりますが、細かいケースで出力が異なることがあるので、 日付のフォーマットをテストしてください。

method CakeTime::convert($serverTime, $timezone = NULL)

method CakeTime::convertSpecifiers($format, $time = NULL)

method CakeTime::dayAsSql($dateString, $field_name, $timezone = NULL)

method CakeTime::daysAsSql($begin, $end, $fieldName, $timezone = NULL)

method CakeTime::format($date, $format = NULL, $default = false, $timezone = NULL)

method CakeTime::fromString($dateString, $timezone = NULL)

method CakeTime::gmt($dateString = NULL)

method CakeTime::i18nFormat($date, $format = NULL, $invalid = false, $timezone = NULL)

method CakeTime::nice($dateString = NULL, $timezone = NULL, $format = null)

method CakeTime::niceShort($dateString = NULL, $timezone = NULL)

method CakeTime::serverOffset()

method CakeTime::timeAgoInWords($dateString, $options = [])

method CakeTime::toAtom($dateString, $timezone = NULL)

method CakeTime::toQuarter($dateString, $range = false)

method CakeTime::toRSS($dateString, $timezone = NULL)

method CakeTime::toUnix($dateString, $timezone = NULL)

method CakeTime::toServer($dateString, $timezone = NULL, $format = 'Y-m-d H:i:s')

method CakeTime::timezone($timezone = NULL)

method CakeTime::listTimezones($filter = null, $country = null, $options = [])

時間のテスト ​

method CakeTime::isToday($dateString, $timezone = NULL)

method CakeTime::isThisWeek($dateString, $timezone = NULL)

method CakeTime::isThisMonth($dateString, $timezone = NULL)

method CakeTime::isThisYear($dateString, $timezone = NULL)

method CakeTime::wasYesterday($dateString, $timezone = NULL)

method CakeTime::isTomorrow($dateString, $timezone = NULL)

method CakeTime::isFuture($dateString, $timezone = NULL)

method CakeTime::isPast($dateString, $timezone = NULL)

method CakeTime::wasWithinLast($timeInterval, $dateString, $timezone = NULL)

Based on the CakePHP Cookbook. Content licensed under CC BY-NC-SA 4.0. Not affiliated with the Cake Software Foundation.