Time

Time ヘルパーはその名の通り、あなたの時間を節約するために使います。これは時間に関連する情報を素早く処理することができます。 Time ヘルパーは主に次のようなふたつのタスクを扱います。

  1. 時間の文字列をフォーマットする

  2. 時間を判定する(ただし基準となる時間は残念ながら変更することはできません)

フォーマット

fromString( $date_string )

fromString は文字列を用い、 strtotime を使って date オブジェクトに変換します。もし数字の文字列が渡されたら、まず整数型に変換し、 Unix エポック(GMT の1970年1月1日0時0分0秒)からの経過秒として扱います。「20081231」という値を渡した場合、 Unix エポックからの経過病として扱われるため、「Fri, Aug 21st 1970, 06:07」というような望ましくない結果が生成されます。

toQuarter( $date_string, $range = false )

toQuarter は与えられた日時がどの四半期に属するか、1、2、3 または 4 という値を返します。もし range が true にセットされていたら、与えられた日時が属する四半期の開始日と終了日を「2008-03-31」という形式で返します。

toUnix( $date_string )

toUnix は fromString のラッパです。

toAtom( $date_string )

toAtom は日時を文字列で「2008-01-12T00:00:00Z」というように、 Atom フォーマットで返します。

toRSS( $date_string )

toRSS は日時を文字列で「Sat, 12 Jan 2008 00:00:00 -0500」というように、 RSS フォーマットで返します。

nice( $date_string = null )

nice は日付文字列を用い、「Tue, Jan 1st 2008, 19:25」というフォーマットで返します。

niceShort( $date_string = null )

niceShort は日付文字列を使い、「Jan 1st 2008, 19:25」というフォーマットで出力します。 date オブジェクトが今日のものであれば、フォーマットは「Today, 19:25」というようになり、昨日のものであれば「Yesterday, 19:25」というようになります。

daysAsSql( $begin, $end, $fieldName, $userOffset = NULL )

daysAsSql は「($field_name >= '2008-01-21 00:00:00') AND ($field_name <= '2008-01-25 23:59:59')」という文字列を返します。これはある日時から別の日時の間のレコードを探すときに便利です。

dayAsSql( $date_string, $field_name )

dayAsSql は daysAsSql と同じフォーマットの文字列を作成しますが、 date オブジェクトを一つしか必要としません。

timeAgoInWords( $datetime_string, $options = array(), $backwards = null )

timeAgoInWords は日付時刻文字列(PHPのstrtotime()関数かMySQLのdatetimeフォーマットとして解釈できるもの)を用い、それを「3 weeks, 3 days ago」という分かりやすい単語のフォーマットに変換します。 $backwards に true を渡すと、未来にセットされた時間を「on 31/12/08」というフォーマットで特に宣言します。

オプション

説明

format

日付のフォーマット。デフォルトは「on 31/12/08」という形。

end

単語や日付のフォーマットを代わりに使わない遮断ポイントを決定します。例えば「+1 month」というようにします。

relativeTime( $date_string, $format = 'j/n/y' )

relativeTime は本質的に timeAgoInWords の別名です。

gmt( $date_string = null )

gmt はグリニッジ標準時(GMT)にセットした日時を整数で返します。

format( $format = 'd-m-Y', $date_string)

format は PHP の date 関数のラッパです。

関数

フォーマット

nice

Tue, Jan 1st 2008, 19:25

niceShort

Jan 1st 2008, 19:25

Today, 19:25 Yesterday, 19:25

daysAsSql

($field_name >= '2008-01-21 00:00:00') AND ($field_name <= '2008-01-25 23:59:59')

dayAsSql

($field_name >= '2008-01-21 00:00:00') AND ($field_name <= '2008-01-21 23:59:59')

timeAgoInWords

relativeTime

on 21/01/08

3 months, 3 weeks, 2 days ago 7 minutes ago 2 seconds ago

gmt

1200787200

時間を判定する

  • isToday

  • isThisWeek

  • isThisMonth

  • isThisYear

  • wasYesterday

  • isTomorrow

  • wasWithinLast

上記の関数は全て、渡した日時の文字列をもとに true または false を返します。 wasWithinLast は追加の $time_interval オプションを用います。

wasWithinLast( $time_interval, $date_string )

wasWithinLast は「3 months」というフォーマットで、秒、分、時間、日、週、月、そして年(複数あるいは単数)を時間の範囲として用います。時間の範囲がタイプミスなどで認識できない場合、デフォルトでは日として扱われます。