Class ShiftFormat
システム内部の時差とフォーマットの時差を自動で調整するためのフォーマットです. 「閲覧しているユーザーのタイムゾーンに合わせて表示する時刻を調整したい」 といったケースで, 既存の Format オブジェクトを上書きする形で利用します.
サンプルとして, 日本語のサイトがニューヨークのサーバーで管理されているというシナリオを考えます. サーバー側ではタイムゾーンを America/New_York (UTC-5) として時間の管理をしているが, ブラウザに出力する際は Asia/Tokyo (UTC+9) のタイムゾーンで表示させたいとします.
// php.ini で timezone = America/New_York が設定されているものとする // 表示用の時刻を UTC+9 とする (-540 分のオフセットを指定する) $f = new ShiftFormat(new SimpleFormat("Y/m/d H:i:s"), -540); // 日本のユーザーが入力した時刻をサーバー内部の時刻に変換する $d = Timestamp::parse("2012/05/21 07:30:45", $f); echo $d; // "2012-05-20 17:30:45" (UTC+9 から UTC-5 に変換) // サーバで管理されている時刻を日本のユーザー向けに変換する $d = new Timestamp(2012, 1, 1, 0, 0, 0); echo $d->format($f); // "2012/01/01 14:00:00" (UTC-5 から UTC+9 に変換)
このクラスの parseDate と formatDate は時差の変換を行いません. オリジナルの実行結果をそのまま返します.
ちなみに Peach\DT\W3cDatetimeFormat
と Peach\DT\HttpDateFormat
に関しては, 自身でタイムゾーンの変換機能をサポートしているため,
このクラスを使う必要はありません.
- Peach\DT\FormatWrapper implements Peach\DT\Format
- Peach\DT\ShiftFormat
public
|
#
__construct(
フォーマットの時差とシステム時刻の時差を指定して, 新しい ShiftFormat を構築します. 引数の単位は分です. UTC+1 以降の場合は負の値, UTC-1 以前の場合は正の値を指定してください. |
public
|
|
public
|
|
public
string
|
#
formatDatetime(
変換対象の時間オブジェクトを表示用のタイムゾーンに変換してから, オリジナルの formatDatetime を実行します. |
public
string
|
#
formatTimestamp(
変換対象の時間オブジェクトを表示用のタイムゾーンに変換してから, オリジナルの formatTimestamp を実行します. |
formatDate(),
getOriginal(),
parseDate()
|