ごもちゃ箱BLOG

自作の PHP クラスライブラリ PEACH の開発日記です。

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)

書式を定義して入出力

JavaSimpleDateFormat (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 クラスが存在するので, 次回はそちらも紹介していこうと思います.