DT

クラス: 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 の際にタイムゾーンを一切考慮しません. また, 書式化する際にタイムゾーン文字列を付与しません.

Tags

  • return : タイムゾーンに対応しないインスタンス
  • access : public

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 の組み合わせによる動作例を示します.

  1.  // 書式・システム時刻共に UTC+9
  2.  $f1 new Peach_DT_W3cDatetimeFormat(-540-540);
  3.  
  4.  // 書式は GMT, システム時刻は UTC+9
  5.  $f2 new Peach_DT_W3cDatetimeFormat(0,    -540);
  6.  
  7.  // 書式は UTC+9, システム時刻は GMT
  8.  $f3 new Peach_DT_W3cDatetimeFormat(-540,    0);
  9.  
  10.  // 2012-05-21T07:30 の時間オブジェクトを生成
  11.  $d new Peach_DT_Datetime(2012521730);
  12.  var_dump($d->format($f1))// "2012-05-21T07:30+09:00"
  13.  var_dump($d->format($f2))// "2012-05-20T22:30Z"      (UTC+9 の時刻を GMT として書式化)
  14.  var_dump($d->format($f3))// "2012-05-21T16:30+09:00" (GMT の時刻を UTC+9 として書式化)

Tags

  • access : public

引数

int   $externalOffset   フォーマットの時差 (単位は分, 省略した場合はシステム設定の値を使用)
int   $internalOffset   システム時刻の時差 (単位は分, 省略した場合はシステム設定の値を使用)

formatDate

line 238

string formatDate(Peach_DT_Date $d)

指定された時間オブジェクトを "YYYY-MM-DD" 形式の文字列に変換します.

Tags

引数

Peach_DT_Date   $d   解析対象の Date オブジェクト

定義

Peach_DT_Format::formatDate()
指定された Peach_DT_Date オブジェクトを書式化します.

formatDatetime

line 251

string formatDatetime(Peach_DT_Datetime $d)

指定された時間オブジェクトを "YYYY-MM-DDThh:mm" 形式の文字列に変換します.

このインスタンスがタイムゾーンに対応している場合, 末尾にタイムゾーン文字列も付加します.

Tags

引数

Peach_DT_Datetime   $d   変換対象の Datetime オブジェクト

定義

Peach_DT_Format::formatDatetime()
指定された Peach_DT_Datetime オブジェクトを書式化します.

formatTimestamp

line 265

string formatTimestamp(Peach_DT_Timestamp $d)

指定された時間オブジェクトを "YYYY-MM-DDThh:mm:ss" 形式の文字列に変換します.

このインスタンスがタイムゾーンに対応している場合, 末尾にタイムゾーン文字列も付加します.

Tags

引数

Peach_DT_Timestamp   $d   変換対象の Timestamp オブジェクト

定義

Peach_DT_Format::formatTimestamp()
指定された Peach_DT_Timestamp オブジェクトを書式化します.

parseDate

line 164

Peach_DT_Date parseDate(string $format)

"YYYY-MM-DD" 形式の文字列を解析します.

Tags

引数

string   $format   解析対象の文字列

定義

Peach_DT_Format::parseDate()
指定された文字列を解析して DATE 型の時間オブジェクトに変換します.

parseDatetime

line 185

Peach_DT_Datetime parseDatetime(string $format)

"YYYY-MM-DDThh:mm" 形式の文字列を解析します.

文字列の末尾にタイムゾーン (+hh:mm や -hh:mm など) を含む場合は, システム時刻への変換を行います.

Tags

引数

string   $format   解析対象の文字列

定義

Peach_DT_Format::parseDatetime()
指定された文字列を解析して DATETIME 型の時間オブジェクトに変換します.

parseTimestamp

line 211

Peach_DT_Timestamp parseTimestamp(string $format)

"YYYY-MM-DDThh:mm:ss" 形式の文字列を解析します.

Tags

引数

string   $format   解析対象の文字列

定義

Peach_DT_Format::parseTimestamp()
指定された文字列を解析して TIMESTAMP 型の時間オブジェクトに変換します.