DT の扱い方 (第 2 回)
今回は, 自作の汎用 PHP クラスライブラリ "PEACH" の解説として, 前回に引き続き DT (Date and Time) モジュールの tips を紹介していきます. 今回は主に文字列処理について.
(PEACH ライブラリに関する詳細はこちら: http://trashtoy.github.io/peach/ )
基本
format() メソッドで時間オブジェクトを "YYYY-MM-DD", "YYYY-MM-DD hh:mm", "YYYY-MM-DD hh:mm:ss" 形式の文字列に変換することができます.
<?php require_once("/path/to/PEACH2/src/autoload.php"); use Peach\DT\Date; use Peach\DT\Datetime; use Peach\DT\Timestamp; $t1 = Date::now(); $t2 = Datetime::now(); $t3 = Timestamp::now(); var_dump($t1->format()); var_dump($t2->format()); var_dump($t3->format());
出力
string(10) "2014-08-25" string(16) "2014-08-25 22:15" string(19) "2014-08-25 22:15:07"
parse() メソッドは文字列を時間オブジェクトに変換することができます. (format と逆の操作です)
<?php require_once("/path/to/PEACH2/src/autoload.php"); use Peach\DT\Date; $t = Date::parse("2012-05-21"); var_dump($t->get("year")); var_dump($t->get("month")); var_dump($t->get("date"));
出力
int(2012) int(5) int(21)
書式を定義して入出力
Java の SimpleDateFormat (Java Platform SE 8) みたいな感じで, ユーザー定義の書式を入出力をすることができます.
文字列に変換する場合は以下のようなコードになります. format() の引数に SimpleFormat オブジェクトを指定します.
<?php require_once("/path/to/PEACH2/src/autoload.php"); use Peach\DT\Timestamp; use Peach\DT\SimpleFormat; $f = new SimpleFormat("Y年n月j日 H:i:s"); $t = Timestamp::now(); var_dump($t->format($f));
出力
string(25) "2014年8月25日 22:15:07"
文字列を時間オブジェクトに変換する場合はこんな感じです. parse() の第 2 引数に SimpleFormat オブジェクトを指定します.
<?php require_once("/path/to/PEACH2/src/autoload.php"); use Peach\DT\Timestamp; use Peach\DT\SimpleFormat; $f = new SimpleFormat("Y年n月j日 H:i:s"); $t = Timestamp::parse("2012年5月12日 07:34:56", $f); var_dump($t->get("year")); var_dump($t->get("month")); var_dump($t->get("date")); var_dump($t->get("hour")); var_dump($t->get("minute")); var_dump($t->get("second"));
出力
int(2012) int(5) int(12) int(7) int(34) int(56)
パターン文字列には以下の種類があります. (SimpleFormat の API にも同じ情報を記載しています)
- Y
- 年 (4桁固定, 例: "2014")
- m
- 月 (2桁固定, 例: "05")
- n
- 月 (1~2桁, 例: "5")
- d
- 日 (2桁固定, 例: "01")
- j
- 日 (1~2桁, 例: "1")
- H
- 時 (2桁固定, 例: "07")
- G
- 時 (1~2桁, 例: "7")
- i
- 分 (2桁固定, 例: "02")
- f
- 分 (1~2桁, 例: "2")
- s
- 秒 (2桁固定, 例: "00")
- b
- 秒 (1~2桁, 例: "0")
今日はここまで. 今回挙げた SimpleFormat 以外にも様々な Format クラスが存在するので, 次回はそちらも紹介していこうと思います.