クラス: Peach_DT_ShiftFormat
定義: /Peach/DT/ShiftFormat.php
Peach_DT_FormatWrapper | +-Peach_DT_ShiftFormat
システム内部の時差とフォーマットの時差を自動で調整するためのフォーマットです.
「閲覧しているユーザーのタイムゾーンに合わせて表示する時刻を調整したい」 といったケースで, 既存の Format オブジェクトを上書きする形で利用します.
サンプルとして, 日本語のサイトがニューヨークのサーバーで管理されているというシナリオを考えます. サーバー側ではタイムゾーンを America/New_York (UTC-5) として時間の管理をしているが, ブラウザに出力する際は Asia/Tokyo (UTC+9) のタイムゾーンで表示させたいとします.
- // php.ini で timezone = America/New_York が設定されているものとする
- // 表示用の時刻を UTC+9 とする (-540 分のオフセットを指定する)
- // 日本のユーザーが入力した時刻をサーバー内部の時刻に変換する
- echo $d; // "2012-05-20 17:30:45" (UTC+9 から UTC-5 に変換)
- // サーバで管理されている時刻を日本のユーザー向けに変換する
- echo $d->format($f); // "2012/01/01 14:00:00" (UTC-5 から UTC+9 に変換)
このクラスの parseDate と formatDate は時差の変換を行いません. オリジナルの実行結果をそのまま返します.
ちなみに Peach_DT_W3cDatetimeFormat と Peach_DT_HttpDateFormat に関しては, 自身でタイムゾーンの変換機能をサポートしているため, このクラスを使う必要はありません.
メソッド 詳細
constructor __construct
line 81
Peach_DT_ShiftFormat __construct(Peach_DT_Format $original, int $externalOffset, [int $internalOffset = null])
フォーマットの時差とシステム時刻の時差を指定して, 新しい ShiftFormat を構築します.
引数の単位は分です. UTC+1 以降の場合は負の値, UTC-1 以前の場合は正の値を指定してください.
オーバーライド: Peach_DT_FormatWrapper::__construct() (指定された Peach_DT_Format オブジェクトをラップする FormatWrapper を構築します.)
formatDatetime
line 124
string formatDatetime(Peach_DT_Datetime $d)
変換対象の時間オブジェクトを表示用のタイムゾーンに変換してから, オリジナルの formatDatetime を実行します.
オーバーライド: Peach_DT_FormatWrapper::formatDatetime() (ラップ対象のオブジェクトの formatDatetime メソッドを実行します.)
formatTimestamp
line 135
string formatTimestamp(Peach_DT_Timestamp $d)
変換対象の時間オブジェクトを表示用のタイムゾーンに変換してから, オリジナルの formatTimestamp を実行します.
オーバーライド: Peach_DT_FormatWrapper::formatTimestamp() (ラップ対象のオブジェクトの formatTimestamp メソッドを実行します.)
parseDatetime
line 93
Peach_DT_Time parseDatetime(string $format)
オリジナルの parseDatetime で得られた結果をシステム時刻に変換して返します.
オーバーライド: Peach_DT_FormatWrapper::parseDatetime() (ラップ対象のオブジェクトの parseDatetime メソッドを実行します.)
parseTimestamp
line 103
Peach_DT_Time parseTimestamp(string $format)
オリジナルの parseTimestamp で得られた結果をシステム時刻に変換して返します.
オーバーライド: Peach_DT_FormatWrapper::parseTimestamp() (ラップ対象のオブジェクトの parseTimestamp メソッドを実行します.)