クラス: Peach_DT_W3cDatetimeFormat
定義: /Peach/DT/W3cDatetimeFormat.php
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 Peach_DT_Datetime(2012, 5, 21, 7, 30) に等価) を生成します.
時間オブジェクトを書式化する際は, 出力用の時差に合わせた文字列を生成します. 例えば内部のタイムゾーンが UTC+9, 出力用のタイムゾーンが UTC+5 に設定されているものとします. この場合, 内部のタイムゾーンと出力用のタイムゾーンの時差が -4 時間となるため, new Peach_DT_Datetime(2012, 5, 21, 7, 30) の時間オブジェクトを書式化した結果は "2012-05-21T03:30+5:00" となります.
メソッド 詳細
static getInstance
line 148
static Peach_DT_W3cDatetimeFormat getInstance()
デフォルトのインスタンスを返します.
このメソッドから生成されたオブジェクトは, parse の際にタイムゾーンを一切考慮しません. また, 書式化する際にタイムゾーン文字列を付与しません.
constructor __construct
line 125
Peach_DT_W3cDatetimeFormat __construct([int $externalOffset = null], [int $internalOffset = null])
指定されたタイムゾーンの条件で, 新しいフォーマットを構築します.
タイムゾーンを扱わない場合は, コンストラクタの代わりに Peach_DT_W3cDatetimeFormat::getInstance() を使って下さい.
引数 $externalOffset を指定することで, 書式化する際のタイムゾーンの値を設定することが出来ます. (デフォルトはシステム時刻のタイムゾーンとなります) さらに $internalOffset を指定することで, システム時刻のタイムゾーンとして任意の値を指定することも出来ます.
$externalOffset と $internalOffset を省略した場合, デフォルト値としてシステム時刻の設定 (Peach_DT_Util::getTimeZoneOffset()) と同じ値が指定されます. UTC+1 以上の時差を設定する場合は負の値, UTC-1 以下の時差を設定する場合は正の値を指定してください.
以下に, $externalOffset と $internalOffset の組み合わせによる動作例を示します.
- // 書式・システム時刻共に UTC+9
- // 書式は GMT, システム時刻は UTC+9
- // 書式は UTC+9, システム時刻は GMT
- // 2012-05-21T07:30 の時間オブジェクトを生成
formatDate
line 238
string formatDate(Peach_DT_Date $d)
指定された時間オブジェクトを "YYYY-MM-DD" 形式の文字列に変換します.
formatDatetime
line 251
string formatDatetime(Peach_DT_Datetime $d)
指定された時間オブジェクトを "YYYY-MM-DDThh:mm" 形式の文字列に変換します.
このインスタンスがタイムゾーンに対応している場合, 末尾にタイムゾーン文字列も付加します.
formatTimestamp
line 265
string formatTimestamp(Peach_DT_Timestamp $d)
指定された時間オブジェクトを "YYYY-MM-DDThh:mm:ss" 形式の文字列に変換します.
このインスタンスがタイムゾーンに対応している場合, 末尾にタイムゾーン文字列も付加します.
parseDate
line 164
Peach_DT_Date parseDate(string $format)
"YYYY-MM-DD" 形式の文字列を解析します.
parseDatetime
line 185
Peach_DT_Datetime parseDatetime(string $format)
"YYYY-MM-DDThh:mm" 形式の文字列を解析します.
文字列の末尾にタイムゾーン (+hh:mm や -hh:mm など) を含む場合は, システム時刻への変換を行います.
parseTimestamp
line 211
Peach_DT_Timestamp parseTimestamp(string $format)
"YYYY-MM-DDThh:mm:ss" 形式の文字列を解析します.