CakeTime
-
class CakeTime
TimeHelper
の機能が View
の外部で必要な場合、
CakeTime
クラスを使用してください。
class UsersController extends AppController {
public $components = array('Auth');
public function afterLogin() {
App::uses('CakeTime', 'Utility');
if (CakeTime::isToday($this->Auth->user('date_of_birth']))) {
// 誕生日のお祝いメッセージでユーザーに挨拶
$this->Session->setFlash(__('Happy birthday you...'));
}
}
}
フォーマット
-
CakeTime::convert($serverTime, $timezone = NULL)
- 戻り値の型:
integer
(サーバのタイムゾーンで) 与えられた時間を、与えられたタイムゾーンで
ユーザーのローカル時間に変換します。
// TimeHelper で実行
echo $this->Time->convert(time(), 'Asia/Jakarta');
// 1321038036
// CakeTime で実行
App::uses('CakeTime', 'Utility');
echo CakeTime::convert(time(), new DateTimeZone('Asia/Jakarta'));
バージョン 2.2 で変更: $timezone
パラメータは、2.1 以前で使用されていた $userOffset
パラメータを
置き換えました。
-
CakeTime::convertSpecifiers($format, $time = NULL)
- 戻り値の型:
string
strftime 関数の書式で文字列を変換し、Windows セーフで
i18n を意識した書式を返します。
-
CakeTime::dayAsSql($dateString, $field_name, $timezone = NULL)
- 戻り値の型:
string
daysAsSql と同じ書式の文字列を作成します。ただし、日付オブジェクトを
1つだけ必要とします。
// TimeHelper で実行
echo $this->Time->dayAsSql('Aug 22, 2011', 'modified');
// (modified >= '2011-08-22 00:00:00') AND
// (modified <= '2011-08-22 23:59:59')
// CakeTime で実行
App::uses('CakeTime', 'Utility');
echo CakeTime::dayAsSql('Aug 22, 2011', 'modified');
バージョン 2.2 で変更: $timezone
パラメータは、2.1 以前で使用されていた $userOffset
パラメータを
置き換えました。
バージョン 2.2 で追加: $dateString
パラメータは、現在 DateTime オブジェクトも受け取れます。
-
CakeTime::daysAsSql($begin, $end, $fieldName, $timezone = NULL)
- 戻り値の型:
string
"($field_name >= '2008-01-21 00:00:00') AND ($field_name <= '2008-01-25
23:59:59')" という書式の文字列を返します。これは、2つの期間を含むレコードを
検索する必要がある場合に役に立ちます。
// TimeHelper で実行
echo $this->Time->daysAsSql('Aug 22, 2011', 'Aug 25, 2011', 'created');
// (created >= '2011-08-22 00:00:00') AND
// (created <= '2011-08-25 23:59:59')
// CakeTime で実行
App::uses('CakeTime', 'Utility');
echo CakeTime::daysAsSql('Aug 22, 2011', 'Aug 25, 2011', 'created');
バージョン 2.2 で変更: $timezone
パラメータは、2.1 以前で使用されていた $userOffset
パラメータを
置き換えました。
バージョン 2.2 で追加: $dateString
パラメータは、現在 DateTime オブジェクトも受け取れます。
-
CakeTime::format($date, $format = NULL, $default = false, $timezone = NULL)
- 戻り値の型:
string
PHP strftime() format パラメータ
を使用して与えられた書式に文字列をフォーマットします。
// TimeHelper で実行
echo $this->Time->format('2011-08-22 11:53:00', '%B %e, %Y %H:%M %p');
// August 22, 2011 11:53 AM
echo $this->Time->format('+2 days', '%c');
// 2 days from now formatted as Sun, 13 Nov 2011 03:36:10 AM EET
// CakeTime で実行
App::uses('CakeTime', 'Utility');
echo CakeTime::format('2011-08-22 11:53:00', '%B %e, %Y %H:%M %p');
echo CakeTime::format('+2 days', '%c');
第一引数として日付や時間をセットします。この時、 strftime
互換の書式を使います。
この呼び出しサインは、 date()
互換の書式では不可能なロケールを配慮した日付のフォーマットを
テコ入れします。
// TimeHelper で実行
echo $this->Time->format('2012-01-13', '%d-%m-%Y', 'invalid');
// CakeTime で実行
App::uses('CakeTime', 'Utility');
echo CakeTime::format('2011-08-22', '%d-%m-%Y');
バージョン 2.2 で変更: $format
と $date
パラメータは、2.1 以前とは順番が逆になりました。
$timezone
パラメータは、2.1 以前に使用されていた $userOffset
パラメータを置き換えました。
$default
パラメータは、2.1 以前に使用されていた $invalid
パラメータを置き換えました。
バージョン 2.2 で追加: $dateString
パラメータは、現在 DateTime オブジェクトも受け取れます。
-
CakeTime::fromString($dateString, $timezone = NULL)
- 戻り値の型:
string
文字列を受け取り、日付の整数値に変換するために
strtotime を使います。
// TimeHelper で実行
echo $this->Time->fromString('Aug 22, 2011');
// 1313971200
echo $this->Time->fromString('+1 days');
// 1321074066 (現在日時 +1 日)
// CakeTime で実行
App::uses('CakeTime', 'Utility');
echo CakeTime::fromString('Aug 22, 2011');
echo CakeTime::fromString('+1 days');
バージョン 2.2 で変更: $timezone
パラメータは、2.1 以前で使用されていた $userOffset
パラメータを
置き換えました。
バージョン 2.2 で追加: $dateString
パラメータは、現在 DateTime オブジェクトも受け取れます。
-
CakeTime::gmt($dateString = NULL)
- 戻り値の型:
integer
グリニッジ標準時 (GMT) にセットした日時を整数で返します。
// TimeHelper で実行
echo $this->Time->gmt('Aug 22, 2011');
// 1313971200
// CakeTime で実行
App::uses('CakeTime', 'Utility');
echo CakeTime::gmt('Aug 22, 2011');
-
CakeTime::i18nFormat($date, $format = NULL, $invalid = false, $timezone = NULL)
- 戻り値の型:
string
UNIX タイムスタンプや strtotime() 形式の日付の文字列を与えてフォーマットされた
日付の文字列を返します。LC_TIME ファイルを使用している場合、現在の言語のデフォルトの
日付書式を加味します。 LC_TIME ファイルに関する詳細は、 こちら を
ご覧ください。
バージョン 2.2 で変更: $timezone
パラメータは、2.1 以前で使用されていた $userOffset
パラメータを
置き換えました。
-
CakeTime::nice($dateString = NULL, $timezone = NULL, $format = null)
- 戻り値の型:
string
日付の文字列を受け取ると、"Tue, Jan 1st 2008, 19:25" の書式や、
追加で渡した $format
パラメータの書式で出力します。
// TimeHelper で実行
echo $this->Time->nice('2011-08-22 11:53:00');
// Mon, Aug 22nd 2011, 11:53
// CakeTime で実行
App::uses('CakeTime', 'Utility');
echo CakeTime::nice('2011-08-22 11:53:00');
-
CakeTime::niceShort($dateString = NULL, $timezone = NULL)
- 戻り値の型:
string
日付の文字列を受け取ると、 "Jan 1st 2008, 19:25" という書式で出力します。
日付が今日であれば、"Today, 19:25" という書式になります。日付が昨日であれば、
"Yesterday, 19:25" という書式になります。
// TimeHelper で実行
echo $this->Time->niceShort('2011-08-22 11:53:00');
// Aug 22nd, 11:53
// CakeTime で実行
App::uses('CakeTime', 'Utility');
echo CakeTime::niceShort('2011-08-22 11:53:00');
バージョン 2.2 で変更: $timezone
パラメータは、2.1 以前で使用されていた $userOffset
パラメータを
置き換えました。
バージョン 2.2 で追加: $dateString
パラメータは、現在 DateTime オブジェクトも受け取れます。
-
CakeTime::serverOffset()
- 戻り値の型:
integer
GMT からのサーバーのオフセットを秒で返します。
-
CakeTime::timeAgoInWords($dateString, $options = array())
- 戻り値の型:
string
日時の文字列 (PHP の strtotime() 関数や MySQL の datetime 型で解釈できるもの)
を渡すと、"3 weeks, 3 days ago" という分かりやすい言葉に変換します。
// TimeHelper で実行
echo $this->Time->timeAgoInWords('Aug 22, 2011');
// on 22/8/11
// on August 22nd, 2011
echo $this->Time->timeAgoInWords(
'Aug 22, 2011',
array('format' => 'F jS, Y')
);
// CakeTime で実行
App::uses('CakeTime', 'Utility');
echo CakeTime::timeAgoInWords('Aug 22, 2011');
echo CakeTime::timeAgoInWords(
'Aug 22, 2011',
array('format' => 'F jS, Y')
);
'end' オプションを使うと、言葉での表示期間を設定できます。デフォルトでは '+1 month' です。
// TimeHelper で実行
echo $this->Time->timeAgoInWords(
'Aug 22, 2011',
array('format' => 'F jS, Y', 'end' => '+1 year')
);
// 2011 年 11 月 10 日現在の出力: 2 months, 2 weeks, 6 days ago
// CakeTime で実行
App::uses('CakeTime', 'Utility');
echo CakeTime::timeAgoInWords(
'Aug 22, 2011',
array('format' => 'F jS, Y', 'end' => '+1 year')
);
どのくらい精度で出力するかを指定するために 'accuracy' オプションを使用してください。
出力を制限するためにこれを使用できます。
// $timestamp が '1 month, 1 week, 5 days and 6 hours ago' の場合
echo CakeTime::timeAgoInWords($timestamp, array(
'accuracy' => array('month' => 'month'),
'end' => '1 year'
));
// '1 month ago' と表示
バージョン 2.2 で変更: accuracy
オプションが追加されました。
バージョン 2.2 で追加: $dateString
パラメータは、現在 DateTime オブジェクトも受け取れます。
-
CakeTime::toAtom($dateString, $timezone = NULL)
- 戻り値の型:
string
日時を文字列で "2008-01-12T00:00:00Z" のように、 Atom 形式で返します。
バージョン 2.2 で変更: $timezone
パラメータは、2.1 以前で使用されていた $userOffset
パラメータを
置き換えました。
バージョン 2.2 で追加: $dateString
パラメータは、現在 DateTime オブジェクトも受け取れます。
-
CakeTime::toQuarter($dateString, $range = false)
- 戻り値の型:
mixed
与えられた日付が、どの四半期に属するかを 1、2、3 または 4 で返します。
もし、range が true にセットされていたら、"2008-03-31" 形式で
四半期の開始と終了の2つの要素を配列で返します。
// TimeHelper で実行
echo $this->Time->toQuarter('Aug 22, 2011');
// 3 を表示
$arr = $this->Time->toQuarter('Aug 22, 2011', true);
/*
Array
(
[0] => 2011-07-01
[1] => 2011-09-30
)
*/
// CakeTime で実行
App::uses('CakeTime', 'Utility');
echo CakeTime::toQuarter('Aug 22, 2011');
$arr = CakeTime::toQuarter('Aug 22, 2011', true);
バージョン 2.2 で追加: $dateString
パラメータは、現在 DateTime オブジェクトも受け取れます。
バージョン 2.4 で追加: 新しいオプションパラメータ relativeString
(デフォルトでは %s ago
) と
absoluteString
(デフォルトでは on %s
) は、出力結果の文字列をカスタマイズするために
追加されました。
- 戻り値の型:
string
日時を文字列で "Sat, 12 Jan 2008 00:00:00 -0500" のように、
RSS 形式で返します。
バージョン 2.2 で変更: $timezone
パラメータは、2.1 以前で使用されていた $userOffset
パラメータを
置き換えました。
バージョン 2.2 で追加: $dateString
パラメータは、現在 DateTime オブジェクトも受け取れます。
-
CakeTime::toUnix($dateString, $timezone = NULL)
- 戻り値の型:
integer
fromString メソッドのラッパーです。
バージョン 2.2 で変更: $timezone
パラメータは、2.1 以前で使用されていた $userOffset
パラメータを
置き換えました。
バージョン 2.2 で追加: $dateString
パラメータは、現在 DateTime オブジェクトも受け取れます。
-
CakeTime::toServer($dateString, $timezone = NULL, $format = 'Y-m-d H:i:s')
- 戻り値の型:
mixed
バージョン 2.2 で追加: サーバのタイムゾーンでフォーマットされた日付を返します。
-
CakeTime::timezone($timezone = NULL)
- 戻り値の型:
DateTimeZone
バージョン 2.2 で追加: 文字列またはユーザーのタイムゾーンオブジェクトからタイムゾーンオブジェクトを返します。
もし、パラメータなしで関数が呼ばれた場合、 'Config.timezone' 設定値からタイムゾーンの取得を
試みます。
-
CakeTime::listTimezones($filter = null, $country = null, $options = array())
- 戻り値の型:
array
バージョン 2.2 で追加: タイムゾーンの一覧を返します。
バージョン 2.8 で変更: $options
は、 group
, abbr
, before
, after
キーを持つ配列を受け付けます。
abbr => true
を指定すると、 <option>
テキストにタイムゾーンの省略形が追加されます。
時間のテスト
-
CakeTime::isToday($dateString, $timezone = NULL)
-
CakeTime::isThisWeek($dateString, $timezone = NULL)
-
CakeTime::isThisMonth($dateString, $timezone = NULL)
-
CakeTime::isThisYear($dateString, $timezone = NULL)
-
CakeTime::wasYesterday($dateString, $timezone = NULL)
-
CakeTime::isTomorrow($dateString, $timezone = NULL)
-
CakeTime::isFuture($dateString, $timezone = NULL)
-
-
CakeTime::isPast($dateString, $timezone = NULL)
-
-
CakeTime::wasWithinLast($timeInterval, $dateString, $timezone = NULL)
バージョン 2.2 で変更: $timezone
パラメータは、2.1 以前で使用されていた $userOffset
パラメータを
置き換えました。
バージョン 2.2 で追加: $dateString
パラメータは、現在 DateTime オブジェクトも受け取れます。
上記の全ての関数は、日付の文字列を渡すと true か false を返します。
wasWithinLast
は、追加で $timeInterval
オプションを受け取ります。
// TimeHelper で実行
$this->Time->wasWithinLast($timeInterval, $dateString);
// CakeTime で実行
App::uses('CakeTime', 'Utility');
CakeTime::wasWithinLast($timeInterval, $dateString);
wasWithinLast
は、"3 months" という書式 (複数形もしくは単数形) で、
秒 (seconds)・分 (minutes)・時 (hours)・日 (days)・月 (months)・年 (years) を受け取ります。
タイプミスなどで認識できない場合、デフォルトでは日として扱われます。