Class W3cDatetimeFormat
W3CDTF と時間オブジェクトの相互変換を行うフォーマットです. 本来の W3CDTF は日付と時刻の間に "T" が入りますが (例: "YYYY-MM-DDThh:mm:ss") このクラスは SQL などで用いられる慣用表現 (例: "YYYY-MM-DD hh:mm:ss") のパースもできます.
parse メソッドは, 文字列の先頭が W3CDTF の書式にマッチするかどうかで妥当性をチェックします. "2012-05-21T07:30:00" のような文字列は parseDate, parseDatetime, parseTimestamp のすべてのメソッドで受け付けますが, "2012-05-21" のような文字列は parseDate だけしか受け付けません.
このクラスはタイムゾーンを適切に扱うことが出来ます. parse 系メソッドでは, 時間オブジェクトに変換する際に内部のタイムゾーンに合わせて時刻を調整します. 例えばシステム時刻が UTC+9 として, GMT の時間文字列 "2012-05-20T22:30Z" を parse した場合 9 時間進ませた時間オブジェクト (new Datetime(2012, 5, 21, 7, 30) に等価) を生成します.
時間オブジェクトを書式化する際は, 出力用の時差に合わせた文字列を生成します. 例えば内部のタイムゾーンが UTC+9, 出力用のタイムゾーンが UTC+5 に設定されているものとします. この場合, 内部のタイムゾーンと出力用のタイムゾーンの時差が -4 時間となるため, new Datetime(2012, 5, 21, 7, 30) の時間オブジェクトを書式化した結果は "2012-05-21T03:30+5:00" となります.
- Peach\DT\W3cDatetimeFormat implements Peach\DT\Format
public
|
#
__construct( integer $externalOffset = null, integer $internalOffset = null )
指定されたタイムゾーンの条件で, 新しいフォーマットを構築します. タイムゾーンを扱わない場合は, コンストラクタの代わりに W3cDatetimeFormat::getInstance を使って下さい. |
public static
|
#
getInstance( )
デフォルトのインスタンスを返します. このメソッドから生成されたオブジェクトは, parse の際にタイムゾーンを一切考慮しません. また, 書式化する際にタイムゾーン文字列を付与しません. |
public
|
|
public
|
#
parseDatetime( string $format )
"YYYY-MM-DDThh:mm" 形式の文字列を解析します. 文字列の末尾にタイムゾーン (+hh:mm や -hh:mm など) を含む場合は, システム時刻への変換を行います. |
public
|
|
public
string
|
|
public
string
|
#
formatDatetime(
指定された時間オブジェクトを "YYYY-MM-DDThh:mm" 形式の文字列に変換します. このインスタンスがタイムゾーンに対応している場合, 末尾にタイムゾーン文字列も付加します. |
public
string
|
#
formatTimestamp(
指定された時間オブジェクトを "YYYY-MM-DDThh:mm:ss" 形式の文字列に変換します. このインスタンスがタイムゾーンに対応している場合, 末尾にタイムゾーン文字列も付加します. |