DT

時間操作モジュール DT

Author : trashtoy

Table of Contents

やりたいことを, より簡単に.

パッケージ DT は, 時間操作・入出力のためのライブラリです. PHP にはもともと 日付・時刻関数 が用意されていますが, このモジュールは標準の API に比べて, よりオブジェクト指向な設計となっています.

DT モジュールを利用することで, 時間処理に関する様々な処理を, より簡潔に実現することができます. 拡張性の高い API となっているため, 様々なニーズに対して低コストで対応することができます. このモジュールを使う利点については コンセプト・特徴など を参照してください.

使い方

このモジュールの使い勝手をお伝えするため, いくつかのコード例をお見せします.

時間オブジェクトの生成

ある特定の日付または時刻を表現するオブジェクト (「時間オブジェクト」 と呼びます) を生成するためには, 以下のように書きます.

  1. // 指定された年月日 (2012/05/21) をあらわすオブジェクト
  2. $d1 new Peach_DT_Date(2012521);
  3.  
  4. // 指定された年月日・時刻 (2012/05/21 07:34) をあらわすオブジェクト
  5. $d2 new Peach_DT_Datetime(2012521734);
  6.  
  7. // 指定された年月日・時刻 (2012/05/21 07:34:45) をあらわすオブジェクト
  8. $d3 new Peach_DT_Timestamp(201252173445);

フィールドの参照

時間オブジェクトから「日」や「分」など特定のフィールドを参照するのも簡単に出来ます.

  1. $date new Peach_DT_Date(2012521);
  2. var_dump($date->get("year"));  // int(2012)
  3. var_dump($date->get("month"))// int(5)
  4. var_dump($date->get("date"));  // int(21)

フィールドの上書き

もちろん, 特定のフィールドを上書きしたり, 加算・減算することも出来ます.

以下のコードは, 日付の「月」の値を 7 から 10 に変更します.

  1. $date new Peach_DT_Datetime(2012521734);
  2. $test $date->set("month"10);
  3. var_dump($test->__toString())// string(16) "2012-10-21 07:34"

以下のコードは 100 分後の時刻を計算します.

  1. $date new Peach_DT_Datetime(2012521734);
  2. $test $date->add("minute"100);
  3. var_dump($test->__toString())// string(16) "2012-05-21 09:14"

時間オブジェクトを文字列に変換

文字列の出力方法も色々あります. 引数無しで format() を実行した場合は "YYYY-MM-DD hh:mm:ss" 形式のフォーマットになるため, SQL との連携が簡単にできます.

  1. $d1 new Peach_DT_Date(2012521);
  2. $d2 new Peach_DT_Datetime(2012521734);
  3. $d3 new Peach_DT_Timestamp(201252173445);
  4. var_dump($d1->format());   // string(10) "2012-05-21"
  5. var_dump($d2->format());   // string(16) "2012-05-21 07:34"
  6. var_dump($d3->format());   // string(19) "2012-05-21 07:34:45"

出力のカスタマイズも簡単に出来ます. format() の引数に Peach_DT_Format オブジェクトを指定してください. Java の SimpleDateFormat と同じような使い勝手で活用できます.

  1. $f  new Peach_DT_SimpleFormat("Y/m/d H:i:s");
  2.  
  3. $d1 new Peach_DT_Date(2012521);
  4. $d2 new Peach_DT_Datetime(2012521734);
  5. $d3 new Peach_DT_Timestamp(201252173445);
  6. var_dump($d1->format($f))// string(19) "2012/05/21 00:00:00"
  7. var_dump($d2->format($f))// string(19) "2012/05/21 07:34:00"
  8. var_dump($d3->format($f))// string(19) "2012/05/21 07:34:45"

文字列から時間オブジェクトへの変換

逆に、文字列から時間オブジェクトへの変換も同様に出来ます.

  1. $d1 Peach_DT_Date::parse("2012-05-21");
  2. $d2 Peach_DT_Datetime::parse("2012-05-21 07:34");
  3. $d3 Peach_DT_Timestamp::parse("2012-05-21 07:34:45");

フォーマットを指定した変換も可能です.

  1. $f    new Peach_DT_SimpleFormat("Y/m/d H:i:s");
  2. $date Peach_DT_Timestamp::parse("2012/05/21 07:34:45"$f);
  3. var_dump($date->get("second"))// int(45)

APIの詳細について

詳しくはこちらをご覧ください。